3

我已经通过 google 创建了一个模型SketchUp,我想将它导出到three.js以节省一些时间。因为我认为使用SketchUp比 . 更容易three.js。那么有人可以告诉我该怎么做吗?非常感谢!

4

2 回答 2

11

您可以从 SketcUp 导出 collada (.DAE)。然后使用 Three.js ColladaLoader。我认为 SketchUp 的免费版本可能不允许 collada 导出,但无论如何您都可以导出到 Google 地球 (.KMZ),将其重命名为 .ZIP,在任何存档程序中打开它,您应该会在那里找到一个 .DAE。

它不是防弹的,但主要是有效的。一些技巧:

  • 在导出设置中保留三角面。双面脸通常是最好的,但有时你可能不想这样做。

  • 之后您可能需要将纹理文件的大小调整为二维的非幂次方(例如 256x512)

  • 建议分解/取消分组所有组件和组以避免 ColladaLoader 问题。全选 (Ctrl+A),从上下文菜单中展开。重复,直到没有任何爆炸。或者为此使用插件,例如http://www.smustard.com/script/Bomb SketchUp 本身确实无法爆炸非常复杂的模型,并且可能会出现冻结。这是非常不幸的,除了从模型中删除更复杂的部分之外,您无能为力。或者等待,它可能需要 1 秒到几天之间的任何时间。

  • 在 Three.js 方面,您可能想要遍历导入的对象,并将材质设置为 DoubleSide。

  • SketchUp 在导出时使用英寸单位(即使 UI 或项目设置为公制比例),因此您可能希望相应地缩放导入的模型。Three.js 没有这样的预定义比例,但是比如你认为 1.0 Three.js 单位是 1.0 米,你需要设置 obj.scale.x = obj.scale.y = obj.scale.z = 0.02539999969303608;

于 2013-06-05T18:36:44.663 回答
0

在threejs中,如果要将从文件collada加载的对象放置在某个点,则必须将偏移量转换为正确的单位,例如:

我想把物体放在(600, 1800, 0) mm,文件以英寸为单位导出

var dae; 
dae = collada.scene; 
... 
... 

var x = 600; 
var y = 1800; 
var z = 0; 

convertedX var = x * 0.0393700787 * dae.scale.x; 
convertedY var = y * 0.0393700787 * dae.scale.y; 
convertedZ var = z * 0.0393700787 * dae.scale.z; 

dae.position.set (convertedX, convertedY, convertedZ);
于 2014-05-07T14:55:09.100 回答