我正在研究一个可以解析obj和JSON文件的three.js解析器。
问题是不同的对象不同的对齐方式。我需要硬编码camera.position.z的值。但这不是动态的。
如何动态计算此值?我已经尝试过@WestLangley的解决方案,但它没有用。也许我做错了。
这是我的代码:
camera = new THREE.PerspectiveCamera( 45, width/ height, 1, 10000 );
camera.position.z = 200;
// scene
scene = new THREE.Scene();
scene.add( camera );
THREE.Loader.Handlers.add( /\.dds$/i, new THREE.DDSLoader() );
var mtlLoader = new THREE.MTLLoader();
mtlLoader.setPath( object_path.dir );
mtlLoader.load( object_path.mtl, function( materials ) {
materials.preload();
var objLoader = new THREE.OBJLoader();
objLoader.setMaterials( materials );
objLoader.setPath( object_path.dir);
objLoader.load( object_path.object, function ( object ) {
// object.position.y = - 95;
camera.lookAt(object.position);
scene.add( object );
}, onProgress, onError );
});
renderer = new THREE.WebGLRenderer({preserveDrawingBuffer: true });
renderer.setPixelRatio( window.devicePixelRatio );
renderer.setSize( width, height);
container.appendChild( renderer.domElement );
controls = new THREE.OrbitControls( camera, renderer.domElement );
答案 0 :(得分:0)
您需要调用render() - Function。 在此功能中,您可以根据当前状态动态计算camera.z。像:
var render = function () {
requestAnimationFrame( render );
camera.position.z = ...
renderer.render(scene, camera);
};
render();