Javascript 如何在Three.js中创建多个对象?
我需要使多个对象从顶部落下 我试图复制代码,但没有成功 这是我的密码:Javascript 如何在Three.js中创建多个对象?,javascript,three.js,Javascript,Three.js,我需要使多个对象从顶部落下 我试图复制代码,但没有成功 这是我的密码: ```var renderer = new THREE.WebGLRenderer({canvas: document.getElementById('myCanvas'), antialias: true}); renderer.setClearColor(0x00ff00); renderer.setClearColor( 0xffffff, 0); renderer.setPixel
```var renderer = new THREE.WebGLRenderer({canvas: document.getElementById('myCanvas'), antialias: true});
renderer.setClearColor(0x00ff00);
renderer.setClearColor( 0xffffff, 0);
renderer.setPixelRatio(window.devicePixelRatio);
renderer.setSize(window.innerWidth, window.innerHeight);
// CAMERA!
var camera = new THREE.PerspectiveCamera(35, window.innerWidth / window.innerHeight, 0.1, 3000);
// SCENE!
var scene = new THREE.Scene();
// LIGHTS!
var light = new THREE.AmbientLight(0xffffff, 0.5)
scene.add(light);
var light1 = new THREE.PointLight(0xffffff, 0.5)
scene.add(light1);
// TYPE OF 3D SHAPE!
var geometry = new THREE.BoxGeometry( 100, 100, 20 );
geometry.applyMatrix( new THREE.Matrix4().makeRotationZ( Math.PI / 4 ) );
geometry.applyMatrix( new THREE.Matrix4().makeScale( .6, 0.9, .6 ) ); // MATERIALs!
var material = new THREE.MeshLambertMaterial({color: 0xF3FFE2});
var mesh = new THREE.Mesh(geometry, material);
var mesh1 = new THREE.Mesh(geometry, material);
mesh.position.set(100, 500, -1000);
mesh1.position.set(200, 500, -1000);
scene.add(mesh);
scene.add(mesh1);
// RENDER LOOP
color = '0x'+(Math.random()*0xFFFFFF<<0).toString(16);
requestAnimationFrame(render);
function render() {
move = Math.floor((Math.random() * 2) + 1);
mesh.translateZ(-10)
mesh.translateY(-10)
if (move == 1){
mesh.material.color.setHex(color);
}
mesh.rotation.x += 0.005; //MOVE SHAPE
mesh.rotation.y += 0.1;
renderer.render(scene, camera);
requestAnimationFrame(render);
scene.add(mesh)
}```
``var renderer=new THREE.WebGLRenderer({canvas:document.getElementById('myCanvas'),antialas:true});
渲染器.setClearColor(0x00ff00);
setClearColor(0xffffff,0);
renderer.setPixelRatio(window.devicePixelRatio);
renderer.setSize(window.innerWidth、window.innerHeight);
//照相机!
var摄像机=新的三透视摄像机(35,window.innerWidth/window.innerHeight,0.1300);
//现场!
var scene=new THREE.scene();
//灯光!
var灯光=新的三个环境灯光(0xffffff,0.5)
场景。添加(灯光);
var light1=新的三点光源(0xffffff,0.5)
场景。添加(light1);
//3D形状的类型!
var geometry=新的3.BoxGeometry(10010020);
geometry.applyMatrix(新的三个.Matrix4().makeRotationZ(Math.PI/4));
geometry.applyMatrix(新的三个.Matrix4().makeScale(.6,0.9,6));//材料!
var material=new THREE.MeshLambertMaterial({color:0xF3FFE2});
var mesh=新的三个网格(几何体、材质);
var mesh1=新的三个网格(几何体、材质);
网格位置设置(100500,-1000);
网格1。位置。设置(200500,-1000);
场景。添加(网格);
场景。添加(网格1);
//渲染循环
color='0x'+(Math.random()*0xFFFFFF以下实时示例是代码的增强版本。基本思想是使用数组管理场景中的单个对象:
for(变量i=0;i
然后使用相同的方法更新动画循环中的这些对象
演示:
<>但是,请注意,这种方法需要一个对象调用一个调用,因此它对于大量对象不是非常有效的。您应该考虑使用最近在引擎中引入的对象。研究下面的示例,看看如何使用它来转换单个对象,但用单个绘制调用来呈现它们。
three.js R110