Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.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,我对three.js不熟悉, 我想实现的是,我有多个具有相同透视图的立方体 var g = new THREE.CubeGeometry(200, 200, 200, 1, 1, 1); cube1 = new THREE.Mesh(g, new THREE.MeshFaceMaterial(materials)); cube1.position.set(0,0,0); cube2 = new THREE.Mesh(g, new THREE.MeshFaceMat

我对three.js不熟悉, 我想实现的是,我有多个具有相同透视图的立方体

var g = new THREE.CubeGeometry(200, 200, 200, 1, 1, 1);                
cube1 = new THREE.Mesh(g, new THREE.MeshFaceMaterial(materials));
cube1.position.set(0,0,0);
cube2 = new THREE.Mesh(g, new THREE.MeshFaceMaterial(materials));
cube2.position.set(300,0,0);
这将给我x对齐立方体,但立方体2稍微旋转!
关于寻找什么的建议将非常有用,谢谢

创建一个创建多维数据集的函数,然后在循环中调用它。未经测试,但类似的测试应该会给您带来期望的结果:

// Function to create cubes
function create_cube(x,y,z,rx,ry,rz,color) {
    var geometry, material;
    geometry = new THREE.CubeGeometry(5,5,5);
    material = new THREE.MeshLambertMaterial({color: color});
    cube = new THREE.Mesh(geometry, material);
    cube.position.x += x;
    cube.position.y += y;
    cube.position.z += z;
    cube.rotation.x += rx;
    cube.rotation.y += ry;
    cube.rotation.z += rz;
    cube.castShadow = true;
    return cube;
}

// Create 10 cubes
var n=10;
for (var i = 0; i < n; i++) {
    cube = create_cube(10*i,10*i,10*i,i,i,i,0xffffff);
    scene.add(cube)
}
//创建多维数据集的函数
函数创建多维数据集(x、y、z、rx、ry、rz、颜色){
几何、材料;
几何学=新的三立方测量法(5,5,5);
材质=新的三个.MeshLambertMaterial({color:color});
立方体=新的三个网格(几何体、材质);
立方体位置x+=x;
立方体位置y+=y;
立方体位置z+=z;
立方体旋转x+=rx;
立方体.旋转.y+=ry;
立方体旋转.z+=rz;
cube.castShadow=true;
返回立方体;
}
//创建10个立方体
var n=10;
对于(变量i=0;i

您可以使用i的值来控制每个连续立方体与上一个立方体的差异。

使用正交摄影机而不是透视摄影机。您的相机初始化将如下所示:

var camera = new THREE.OrthographicCamera( width / - 2, width / 2, height / 2, height / - 2, near, far );
其中宽度和长度是画布的尺寸。“近距离”和“远距离”定义与摄影机的最大距离和最小距离(不在此范围内的对象将不会被渲染)


对于相同大小和旋转的正交摄影机框,无论其位置如何,其显示都将完全相同。

您所说的“相同透视”是什么意思?你们实际上描述的是“透视”中看到的两个立方体——它们看起来略有不同,因为它们与相机的距离不同。透视视图中的两个立方体只有在位置和大小相同的情况下才会看起来相同-基本上是“相同的立方体”:-)我想知道您在这里真正想要实现什么。看看什么是正交相机-也许这就是你想要的。谢谢你的评论!如果它们看起来略有不同的原因是它们离摄像机的距离,那么我的目标就是看起来完全一样!