javascript - 在three.js中将材料分配给加载的.obj而不带.mtl
问题描述
如何将像 THREE.MeshPhongMaterial() 这样的材料添加到加载的 .obj 文件中的一个对象(.obj 有多个对象)
var material_10 = new THREE.MeshBasicMaterial( { color: 0x444444 } );
var loader = new THREE.OBMLoader();
loader.load("https://aroncad.com/wp-content/themes/AronCad/3d/satllite/100.obm", function( obj ){
obj.traverse( function( child ) {
...........
} );
scene.add( obj );
});
解决方案
解决您的问题的一种方法是使用Object3D.traverse () 就像您在代码中所做的那样。在官方OBJ 示例中也使用了这种方法,以便将纹理应用于所有材质。适合您的用例的代码如下所示:
object.traverse( function ( child ) {
if ( child.isMesh ) child.material = material_10;
} );
three.js R109
推荐阅读
- node.js - 你如何让机器人在 node-minecraft-protocol 中移动?
- static - 编写正确的静态路径
- swift - Swift 5.4 hex 到 NSColor
- python - 将数据框列中的值获取到新的数据框列中
- python - 如何将txt文件作为输入到python(烧瓶)
- typescript - 在打字稿中为自定义对象创建类型
- javascript - 点击事件后更新变量
- reactjs - I want to apply that theme when click the specific button in material UI React?
- react-native - NavigationContainer 显示“找不到变量:反应”
- cassandra - 使用来自 FLink 的 Datastax 驱动程序使用 SSL 连接到 CosmosDB