如何在 Three.js 中加载 .obj 3D 模型?

Mos*_*awy 8 javascript .obj three.js

这是根据您的建议更新的代码

 var scene = new THREE.Scene();
    var camera = new THREE.PerspectiveCamera( 75, window.innerWidth/window.innerHeight, 0.1, 1000 );
    var element = document.getElementById("容器");

var renderer = new THREE.WebGLRenderer( { alpha: true } ); renderer.setSize( window.innerWidth, window.innerHeight ); element.appendChild( renderer.domElement ); var loader = new THREE.OBJLoader(); loader.load( '3D Model/Tiend3D.obj', function ( object ) { scene.add( object ); }); function render() { window.requestAnimationFrame( render ); renderer.render( scene, camera ); } render();

Run Code Online (Sandbox Code Playgroud)

这是我用来导入 3D 模型的代码,但它根本不起作用,我通过更改其中一个示例中的 3D 模型路径来确保 3D 模型可以加载我的路径它加载得很好,我查看了该示例的代码,但有很多我不熟悉的东西,所以我的问题是加载 .obj 文件并将其添加到场景中的正确方法是什么。

And*_*Ray 3

在您的代码中,您仅在加载模型之前渲染场景一次。如果不重新渲染,向场景添加内容不会产生任何可见效果。

通常,WebGL 渲染是在requestAnimationFrame驱动的循环中完成的,因此它不断运行以获得不断更新的视觉场景。

function render() {

    window.requestAnimationFrame( render );
    renderer.render( scene, camera );

}

render();
Run Code Online (Sandbox Code Playgroud)

或者,如果您确实只想在加载对象后再渲染一帧,只需在onLoad回调中调用 render 即可:

function ( object ) {
    scene.add( object );
    renderer.render( scene, camera );
});
Run Code Online (Sandbox Code Playgroud)