gpt4 book ai didi

three.js - 如何在THREE.js r74和更高版本中使用OBJLoader和MTLLoader

转载 作者:行者123 更新时间:2023-12-04 22:10:54 24 4
gpt4 key购买 nike

好像最近是OBJMTLLoader has been removed(r74?),但是我无法找到有关如何使用这两个替换类的任何文档。这是我当前拥有的代码(改编自Three.js Cookbook):

<script src="../libs/three.r74.js"></script>
<script src="../libs/MTLLoader.js"></script>
<script src="../libs/OBJMTLLoader.js"></script>

<script>
var legoManMesh = null;
function init(){ /* Create my scene here */ }

var loader = new THREE.OBJMTLLoader();
loader.load("../assets/models/lego.obj", "../assets/models/lego.mtl",
function (obj) {
legoManMesh = obj;
init();
}
);
</script>

(顺便说一句,当从r69移到r74时,以上代码会失败,并显示“TypeError:loader.setCrossOrigin不是函数”)

其他:

此处的样本lego.mtl文件使用相对路径引用了一个png纹理。
# Blender MTL File: 'LEGO Minifigure - Blendswap.blend'
# Material Count: 2

newmtl Cap
Ns 96.078431
Ka 0.000000 0.000000 0.000000
Kd 0.990000 0.120000 0.120000
Ks 0.500000 0.500000 0.500000
Ni 1.000000
d 1.00000
illum 2

newmtl Minifig
Ns 874.999998
Ka 0.000000 0.000000 0.000000
Kd 0.800000 0.800000 0.800000
Ks 0.200000 0.200000 0.200000
Ni 1.000000
d 1.000000
illum 2
map_Kd ../textures/Mini-tex.png

最佳答案

这是演示如何在r74中加载.obj和.mtl文件的代码:

var mesh = null;

var mtlLoader = new THREE.MTLLoader();
mtlLoader.setPath( "https://threejs.org/examples/models/obj/walt/" );
mtlLoader.load( 'WaltHead.mtl', function( materials ) {

materials.preload();

var objLoader = new THREE.OBJLoader();
objLoader.setMaterials( materials );
objLoader.setPath( "https://threejs.org/examples/models/obj/walt/" );
objLoader.load( 'WaltHead.obj', function ( object ) {

mesh = object;
mesh.position.y = -50;
scene.add( mesh );

} );

} );

fiddle 在: http://jsfiddle.net/g2evz0q5/

更新了答案以反射(reflect)完整性的更正。

关于three.js - 如何在THREE.js r74和更高版本中使用OBJLoader和MTLLoader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35380403/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com