美文网首页
three.js 3D动画效果

three.js 3D动画效果

作者: charmingcheng | 来源:发表于2017-10-31 10:00 被阅读0次

three.js

<!DOCTYPE html>
<html>
<head>         
<meta charset="UTF-8">
<title>地球自转</title>         
<style>
#canvas-frame {
      width: 100%;
      height: 600px;
}
</style>
</head>
<body onload="render()">
<div id="canvas-frame" ></div>
</body>
<script type="text/javascript" src="three.min.js"></script> 
<script type="text/javascript">
var width = document.getElementById('canvas-frame').clientWidth; //画布宽
var height = document.getElementById('canvas-frame').clientHeight; //画布高

var renderer = new THREE.WebGLRenderer({
         antialias : true
         //canvas: document.getElementById('canvas-frame')
    });
renderer.setSize(width, height);
renderer.setClearColor(0xFFFFFF, 1.0);
document.getElementById('canvas-frame').appendChild(renderer.domElement);

        //初始化场景
var scene = new THREE.Scene();

var camera = new THREE.PerspectiveCamera(45,  width/height , 1, 10000);
camera.position.set(300,300,500); 
camera.up.x = 0;
camera.up.y = 1; //相机朝向--相机上方为y轴
camera.up.z = 0;
camera.lookAt({ x : 0,y : 0,z : 0 });//相机的中心点
scene.add(camera);             

var light = new THREE.AmbientLight(0xffffff); //模拟漫反射光源
light.position.set(600, 1000, 800); //使用Ambient Light时可以忽略方向和角度,只考虑光源的位置
scene.add(light);

//导入材质
var texture = THREE.ImageUtils.loadTexture('images/box.jpg', {}, function() {
    renderer.render(scene, camera);
});

var texture1 = THREE.ImageUtils.loadTexture('images/bg.jpg', {}, function() {
    renderer.render(scene, camera);
});
/**
 * 关于material材料注意点说明 
* MeshBasicMaterial:对光照无感,给几何体一种简单的颜色或显示线框。
* MeshLambertMaterial:这种材质对光照有反应,用于创建暗淡的不发光的物体。
* MeshPhongMaterial:这种材质对光照也有反应,用于创建金属类明亮的物体。
*/
var material = new THREE.MeshLambertMaterial({
    map: texture
});

var material1 = new THREE.MeshLambertMaterial({
    map: texture1
}); 
       
//创建一个立方体
var geometry = new THREE.BoxGeometry(100, 100, 100);
//将material材料添加到几何体geometry
var geom1 = new THREE.SphereGeometry(100,100,100);//第一个参数是半径,第二个是经度分段数,第三个是纬度分段数,第二第三个参数越大,物体越接近球体
var mesh1 = new THREE.Mesh(geom1,material1);
mesh1.position.set(0,100,0);
var mesh = new THREE.Mesh(geometry, material);
var mesh2 = new THREE.Mesh(geometry, material);
var mesh3 = new THREE.Mesh(geometry, material);
mesh.position.set(-400,100,0)
mesh2.position.set(-200,0,200)
mesh3.position.set(300,100,0)
scene.add(mesh);
scene.add(mesh1);
scene.add(mesh2);
scene.add(mesh3);

var helper = new THREE.GridHelper( 1000, 50 );
    helper.setColors( 0x0000ff, 0x808080 );
    //scene.add( helper );

function render(){
  requestAnimationFrame(render);
   //mesh1.rotation.x += 0.02;
   mesh1.rotation.y += 0.02;
   mesh2.rotation.x += 0.02;
   mesh3.rotation.z += 0.02;
   mesh.rotation.y += 0.03;
  //mesh1.rotation.z += 0.03;
  renderer.render(scene, camera);
}     
</script>
 </html>

相关文章

  • three.js 3D动画效果

    three.js

  • CSS3动画3D

    3D效果 给需要做3D动画的元素的父元素开启3D效果 transform-style: preserve-sd; ...

  • UITableViewCell的一些动画

    UITableViewCell的一些动画 1、左侧插入动画 2、弹簧效果 3、折叠展开效果 4、左侧3D变幻效果 ...

  • 2020-01-31

    学习规划 1、Three.js 3D场景 40分钟 2、尝试实现简单的3d效果 3、SSM框架 3小时视频 4、J...

  • Three.js

    Three.js 1. 概述 1.1 什么是Three.js Three.js是一个3D javascript库。...

  • 元素旋转、变形中心点、背面可见、图片翻面

    transform:变形 transition:过渡动画——需要触发 animation:一刷新就有动画 3d效果...

  • Three.js实现简单开门动画

    Three.js实现简单开门动画 先来看一下简单的开门动画实现效果,如下图所示: 可以看得出这个开门动画还是比较简...

  • threejs性能优化手段

    Three.js控制渲染帧率(FPS) 如果场景有动画效果,就必须周期性执行.render()更新canvas画布...

  • vue 小球粒子动画

    效果图 插件three.js,自行下载导入 炫彩丝带动画ribbon.js,需要代码的私信我

  • Flutter 实现酷炫的3D效果

    老孟导读:此文讲解3个酷炫的3D动画效果。 下面是要实现的效果: Flutter 中3D效果是通过 Transfo...

网友评论

      本文标题:three.js 3D动画效果

      本文链接:https://www.haomeiwen.com/subject/nttmpxtx.html