Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在obj文件上放置纹理_Javascript_Three.js_.obj - Fatal编程技术网

Javascript 在obj文件上放置纹理

Javascript 在obj文件上放置纹理,javascript,three.js,.obj,Javascript,Three.js,.obj,我想在我的obj文件上添加纹理,但收到一条错误消息。 这是我的代码: new THREE.MTLLoader() .setPath( 'models/cool' ) .load( 'CobbleStones.mtl', function ( mat ) { mat.preload(); var loader = new THREE.OBJLoader( loading

我想在我的obj文件上添加纹理,但收到一条错误消息。 这是我的代码:

    new THREE.MTLLoader()
            .setPath( 'models/cool' )
                .load( 'CobbleStones.mtl', function ( mat ) {
                    mat.preload();

            var loader = new THREE.OBJLoader( loadingManager );

            loader.load( 'models/cool.obj', function ( object ) {
                object.traverse( function ( child ) {
                    if ( child instanceof THREE.Mesh ) {
                        child.material = gemBackMaterial;
                        child.material = material;

                        loader.setMaterials(mat);

                        var second = child.clone();
                        second.material = gemFrontMaterial;
                        var parent = new THREE.Group();
                        parent.add( second );
                        parent.add( child );
                        scene.add( parent );
                        objects.push( parent );
                    }
                } );
            } );
        });
错误消息是:

GET http://localhost/alpha/Alpha/models/coolCobbleStones.mtl 404 (Not Found)

如果有人能帮我解决这个问题,我将非常感激。

你走错了路。您正在将其设置为:

models/coolCobbleStones.mtl

但是你需要

models/cool/CobbleStones.mtl


只需在
.setPath('models/cool/')中添加一个
/

您好,谢谢,我尝试了另一个mtl文件,您的解决方案有效,但我的obj文件上仍然没有纹理,您知道为什么吗?很难用您的代码示例来说明。感觉像是
gemBackMaterial
material
gemfrontmatterial
不知从何而来。我不知道它们是在哪里声明的,传递到最外层函数的参数
mat
没有分配给任何网格。您好,我正在开发类似配置程序的东西,我需要gemBackMaterial和gemFrontMaterial在运行时更改obj文件的颜色。没有分配垫子吗?我认为loader.setMaterials(mat)就足够了,这就是我在其他示例中看到的,你知道我可以在那里改进什么吗?@Boby是的,看起来你多次调用
loader.setMaterials()
,因为它是在
object.traverse()
循环中触发的。我真的不知道还能告诉你什么,因为这一切都取决于代码运行的上下文、加载的资产等。我的最佳建议是尽可能地遵循示例:一旦加载程序正常工作,然后开始修改它以满足您的特定需要。请阅读
gemfrontmattribute
gemBackMaterial
未声明(可能返回未定义)授权,尽管
gemBackMaterial
已分配,然后在下一行中被覆盖,因此它可能没有那么重要。