Three.js objloader + texture

时间:2016-10-04 10:35:57

标签: javascript three.js

我已经使用Three.js几周了,我设法将纹理应用于通过代码直接创建的多维数据集,但是一旦我尝试使用OBJLoader加载OBJ文件,我注意到我无法使用相同的方法加载TextureLoader的简单png或jpg纹理。

现在我不完全确定会出现什么问题,如果这不是正确的方法,如果我只是不能加载一个简单的图像或者我没有正确应用它。

我已经看到应用纹理似乎很容易使用MTL文件,但不幸的是我不知道如何制作。

我目前的代码如下所示:

        var loader = new THREE.OBJLoader( manager );
        loader.load( 'models/tshirt.obj', function ( object ) {

            object.position.x = 0;
            object.position.y = -200;
            object.scale.x = 10;
            object.scale.y = 10;
            object.scale.z = 10;
            obj = object;
            texture = THREE.TextureLoader('img/crate.png'),
            material = new THREE.MeshLambertMaterial( { map: texture } );
            mesh = new THREE.Mesh( object, material );
            scene.add( mesh );

        } );

但它似乎没有用。该模型不加载并从Three.js给我随机错误。如果不是上面的代码,我改变scene.add( obj);模型实际加载。

我应该在这做什么?我应该继续尝试制作MTL文件吗?

我的完整工作代码可以在http://creativiii.com/3Dproject/old-index.html

看到

编辑:添加网格而不是obj时出现的错误是

three.min.js:436 Uncaught TypeError: Cannot read property 'center' of undefined

1 个答案:

答案 0 :(得分:2)

尝试以下代码:

Traceback (most recent call last):
  File "/usr/bin/google_metadata_script_runner", line 11, in <module>
    load_entry_point('google-compute-engine==2.8.3', 'console_scripts', 'google_metadata_script_runner')()
  File "/usr/lib/python2.7/dist-packages/google_compute_engine/metadata_scripts/script_manager.py", line 109, in main
    debug=bool(options.debug))
  File "/usr/lib/python2.7/dist-packages/google_compute_engine/metadata_scripts/script_manager.py", line 69, in __init__
    self._RunScripts(run_dir=run_dir)
  File "/usr/lib/python2.7/dist-packages/google_compute_engine/metadata_scripts/script_manager.py", line 80, in _RunScripts
    script_dict = self.retriever.GetScripts(dest_dir)
  File "/usr/lib/python2.7/dist-packages/google_compute_engine/metadata_scripts/script_retriever.py", line 213, in GetScripts
    return (self._GetAttributeScripts(instance_data, dest_dir) or
  File "/usr/lib/python2.7/dist-packages/google_compute_engine/metadata_scripts/script_retriever.py", line 179, in _GetAttributeScripts
    dest.write(metadata_value.lstrip())
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2014' in position 201: ordinal not in range(128)

纹理加载更改来自:How to apply texture on an object loaded by OBJLoader?