Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Three.js中创建多个对象?_Javascript_Three.js - Fatal编程技术网

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