我发现,当我构造一个应用了Mesh
的平面Texture
时,如果我对z尺寸进行正向或负向平移(以避免z格斗),纹理就会消失。
有效的代码(z值未翻译):
var material = new THREE.MeshBasicMaterial({ map: texture, transparent: true, opacity: 0.5 });
var geometry = new THREE.PlaneBufferGeometry(1000, 1000);
geometry.translate( 2, 2, 0 ); // when the z value is 0 the stripe texture will show
var stripe = new THREE.Mesh(geometry, material);
scene.add(stripe);
无效的代码(z值正负转换):
var material = new THREE.MeshBasicMaterial({ map: texture, transparent: true, opacity: 0.5 });
var geometry = new THREE.PlaneBufferGeometry(1000, 1000);
geometry.translate( 2, 2, 2 ); // when the z value is translated either positively or negatively (other than 0) the stripe texture will not show up
geometry.translate( 2, 2, -2 ); // this one doesn't work either
var stripe = new THREE.Mesh(geometry, material);
scene.add(stripe);
我使用的OrthographicCamera
的前锥体为0,后锥体为2000,因此应显示正值 。当我将视锥的前部更改为-100时(尽管我听说应该避免负的视锥部值,尽管我不确定为什么),但是当z出现时,条纹 do 出现维是一个非0的值。这是怎么回事?
更新: 这是一个有效的fiddle,您可以在其中转换函数中的z值并亲自查看问题。