1
工作線框正在使用OBJMTLLoader加載我的對象threejs,線框控制單獨工作OBJLoader,但對於OBJMTLLoader它不工作threejs不OBJMTLLoader
var loader = new THREE.OBJMTLLoader();
loader.load('obj/male02/male02.obj', 'obj/male02/male02_dds.mtl', function (object) {
object.children[0].geometry.computeFaceNormals();
var geometry = object.children[0].geometry;
console.log(geometry);
THREE.GeometryUtils.center(geometry);
geometry.dynamic = true;
var material = new THREE.MeshLambertMaterial({color: 0xffffff, shading: THREE.FlatShading, vertexColors: THREE.VertexColors });
mesh = new THREE.Mesh(geometry, material);
scene.add(mesh);
});
function wireframe(){
//alert('hhhhhh');
mesh.material.wireframe = true;
mesh.material.color = new THREE.Color(0x6893DE );
}
,但它引起以下錯誤,所以我的模型沒有顯示在查看器上,所以在這裏我想知道我們可以在任何類型的3D模型上創建線框?
object.children [0] .geometry是未定義
嗨@gaitat現在我沒有任何錯誤,但我應用了幾何和網格,但仍然線框不起作用,在這裏看代碼object.traverse(function(child){if(child的instanceof THREE.Mesh) {child.geometry.computeFaceNormals(); \t \t \t \t \t變種幾何= child.geometry; \t \t \t \t \t \t geometry.dynamic = TRUE; \t \t \t \t \t \t \t \t \t \t \t} \t \t \t \t \t}); \t \t \t \t \t變種材料=新THREE.MeshLambertMaterial({顏色:0XFFFFFF,陰影:THREE.FlatShading,vertexColors:THREE.VertexColors}); mesh = new THREE.Mesh(geometry,material); scene.add(mesh); –
您正在定義'traverse()'函數內的'geometry',然後在函數外部使用它。這是一個範圍問題。 – gaitat
如果我使用的內部橫向幾何()我得到同樣的結果,如果(孩子的instanceof THREE.Mesh) \t \t \t \t \t { \t \t \t \t \t child.geometry.computeFaceNormals(); \t \t \t \t \t var geometry = child.geometry; \t \t \t \t \t console.log(geometry); \t geometry.dynamic = true; \t \t \t \t \t \t \t \t \t \t變種材料=新三。MeshLambertMaterial(); mesh = new THREE.Mesh(geometry,material); \t \t \t \t \t \t \t \t \t \t} \t \t \t \t \t}); –