【问题标题】:blenderswap blender objects to threejsblenders 将搅拌器对象换成threejs
【发布时间】:2018-05-27 20:39:07
【问题描述】:

我是 Blender 和 Blendswap 的新手。我从 blendswap 下载了一个 .blender 渲染,并希望将其加载到我的threejs 场景中。我将搅拌机渲染导出为 .obj 文件,它下载了一个 .obj 文件和一个 .mtl 文件。然后我使用以下代码尝试导入它。没有错误代码,但渲染不显示。我还想看看一旦这个对象被导入来设置它的位置,什么命令是合适的。 (x,y,z) 我无法使用 .position.set 。

  var santa;

  var manager = new THREE.LoadingManager();
    manager.onProgress = function ( item, loaded, total ) {
        console.log( item, loaded, total );
    };
  var onProgress = function ( xhr ) {
    if ( xhr.lengthComputable ) {
      var percentComplete = xhr.loaded / xhr.total * 100;
      console.log( Math.round(percentComplete, 2) + '% downloaded' );
    }
  };
  var onError = function ( xhr ) {
    console.log('Error: ' + xhr)
    };

  var loader = new THREE.OBJLoader( manager );
    loader.load( 'img/santa blendswap.obj', function ( object ) {
      santa = object;
      scene.add( santa );
    }, onProgress, onError );

【问题讨论】:

  • 为什么无法使用 position.set?
  • 你确定 obj 文件在 'img' 文件夹中吗?还要确保“img”文件夹与您的 html 页面所在的路径相同。

标签: javascript three.js blender


【解决方案1】:

如果obj文件在指定的路径中,这段代码应该可以工作,无论如何你可以在加载后设置对象的位置。

var santa;
var onProgress = function ( xhr ){
    if ( xhr.lengthComputable ) {
      var percentComplete = xhr.loaded / xhr.total * 100;
      console.log( Math.round(percentComplete, 2) + '% downloaded' );
    }
};
var onError = function ( xhr ) {
    console.log('Error: ' + xhr)
};
var loader = new THREE.OBJLoader();
//use %20 to encode space between the file name. 'img/santa blendswap.obj' should also work
loader.load( 'img/santa%20blendswap.obj', function ( object ) {
    santa = object;
    santa.position.set( 0, 5, 10 );//You can set the position like this or use object.position.set( 0, 5, 10 )
    scene.add( santa );
}, onProgress, onError );

【讨论】:

    猜你喜欢
    • 2015-08-23
    • 2021-05-10
    • 2016-04-22
    • 2017-09-23
    • 2015-03-20
    • 2020-08-10
    • 2020-11-02
    • 2018-05-21
    • 2011-07-22
    相关资源
    最近更新 更多