Rod*_*lfo 2 javascript three.js
我试图通过声明其向量和面来使用three.js手动构建一个立方体;我可以使用下面的代码来做到这一点,但是,材料似乎没有按预期工作,而是立方体以纯黑色呈现。
var geom = new THREE.Geometry();
var v1 = new THREE.Vector3( -1, 1, 0.1 ),
v2 = new THREE.Vector3( 1, 1, 0.1 ),
v3 = new THREE.Vector3( 1, -1, 0.1 ),
v4 = new THREE.Vector3( -1, -1, 0.1 ),
v5 = new THREE.Vector3( -1, 1, 2 ),
v6 = new THREE.Vector3( 1, 1, 2 ),
v7 = new THREE.Vector3( 1, -1, 2 ),
v8 = new THREE.Vector3( -1, -1, 2 );
geom.vertices.push(v1,v2,v3,v4,v5,v6,v7,v8);
geom.faces.push(
new THREE.Face3(0,1,3),
new THREE.Face3(1,2,3),
new THREE.Face3(4,5,7),
new THREE.Face3(5,6,7),
new THREE.Face3(1,4,5),
new THREE.Face3(0,1,4),
new THREE.Face3(2,3,7),
new THREE.Face3(2,6,7),
new THREE.Face3(0,3,7),
new THREE.Face3(0,4,7),
new THREE.Face3(1,2,5),
new THREE.Face3(2,5,6)
);
var mat = new THREE.MeshNormalMaterial();
mat.side = THREE.DoubleSide;
var cube = new THREE.Mesh( geom, mat);
scene.add(cube);
Run Code Online (Sandbox Code Playgroud)
如果我使用下面的代码正常渲染多维数据集,多维数据集会按预期渲染。
cube = new THREE.Mesh(new THREE.CubeGeometry(2, 2, 2), new THREE.MeshNormalMaterial());
scene.add(cube);
Run Code Online (Sandbox Code Playgroud)
您尚未指定顶点法线。对于一些快速的事情,计算面法线,如下所示:
geom.computeFaceNormals();
Run Code Online (Sandbox Code Playgroud)
但是您应该学习如何在自定义几何图形中设置顶点法线。
此外,面“缠绕顺序”应逆时针方向。你并没有一直这样做。
如果您正确定义面,则可以删除side = THREE.DoubleSide.
三.js r.90
| 归档时间: |
|
| 查看次数: |
386 次 |
| 最近记录: |