我已经通过 google 创建了一个模型SketchUp
,我想将它导出到three.js
以节省一些时间。因为我认为使用SketchUp
比 . 更容易three.js
。那么有人可以告诉我该怎么做吗?非常感谢!
2 回答
您可以从 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;
在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);