【问题标题】:SketchUp export obj with textures - howSketchUp 导出带有纹理的 obj - 如何
【发布时间】:2015-01-09 05:10:00
【问题描述】:

Windows 7(64 位),SketchUp Make 13.0.4812。

目标:将 SketchUp .skp 模型转换为.obj 并使用three.js 加载到WebGL。

问题:sketchup 导出模型到.obj 带有外部纹理,这些纹理不是由three.js 加载的。

问题:是否可以将 SketchUp 模型保存为一个带有纹理的 .obj 文件?

【问题讨论】:

  • OBJ 格式不嵌入纹理。我在想真正的问题是纹理不在 tree.js 试图从中加载它们的位置。
  • 您可能想尝试以 Collada 格式 (.dae) 导出
  • Collada 格式是最适合我的解决方案(嵌入纹理、轻松导出和通过three.js 一步加载)。
  • FWIW 你可以用 OBJ 做纹理。您只需要一个将纹理作为外部文件引用的配套 MTL 文件。编写 OBJ 的软件通常也会编写包含材质和纹理信息的 MTL 文件。

标签: 3d three.js webgl sketchup


【解决方案1】:

不,.obj 是一种简单的文本格式。您不能将纹理存储在 .obj 中。 Here is an example 关于如何从单独的 .jpg 文件加载纹理。

我复制了重要的部分:

// texture
var manager = new THREE.LoadingManager();
manager.onProgress = function ( item, loaded, total ) {
  console.log( item, loaded, total );
};
var texture = new THREE.Texture();
var loader = new THREE.ImageLoader( manager );
loader.load( 'textures/ash_uvgrid01.jpg', function ( image ) {
  texture.image = image;
  texture.needsUpdate = true;
} );

// model
var loader = new THREE.OBJLoader( manager );
loader.load( 'obj/male02/male02.obj', function ( object ) {
  object.traverse( function ( child ) {
    if ( child instanceof THREE.Mesh ) {
      child.material.map = texture;
    }
    scene.add( object );
  });
});

【讨论】:

    猜你喜欢
    • 2013-02-28
    • 2019-09-21
    • 2020-10-05
    • 2018-08-06
    • 2018-09-09
    • 2017-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多