我使用以下代码导入了一个OBJ模型:
var loader = new THREE.OBJLoader();
loader.addEventListener('load', function (geometry) {
object = geometry.content;
scene.add(object);
});
loader.load('ship.obj');
Run Code Online (Sandbox Code Playgroud)
它工作正常,但每当我尝试添加一个材料时,它要么没有效果,要么模型消失.我以为我可以这样做:
var ship = new THREE.Mesh(object, material);
Run Code Online (Sandbox Code Playgroud)
但这不起作用.有没有人知道这样做的方法,或者甚至可能吗?我也试过使用OBJMTLLoader,但它只是增加了复杂性,但仍然不允许我更改材料.
我正在使用围绕场景中心点构建的大量对象,并且需要围绕它们的局部轴操纵它们.它们都使用空白对象和lookAt()面向原点,然后我使用此方法正确对齐其他轴.以这种方式获得初始旋转效果很好,不幸的是,当我尝试动态旋转这些对象时object.rotation.x = <amount>
,它不尊重对象的局部轴.
令人困惑的部分是,它甚至不使用全局轴,它使用的轴几乎完全是任意的.我在这里设置了一个JSFiddle来演示这个.正如您在129行上看到的那样looker.rotation.z
,它可以正常工作,它可以正确地沿Z轴旋转,但是如果它改为X或Y,则它不会沿局部轴或全局轴旋转.如果有人能揭开发生这种情况的神秘面纱,那就太好了.