我已经通过Google SketchUp
创建了一个模型,我想将其导出到three.js
以节省一些时间。因为我认为使用SketchUp
比three.js
更容易然后有人能告诉我怎么做吗?非常感谢你!
答案 0 :(得分:7)
您可以从SketcUp导出collada(.DAE)。然后使用Three.js ColladaLoader。我认为SketchUp的免费版本可能不允许collada导出,但无论如何你可以导出到Google Earth(.KMZ),将其重命名为.ZIP,在任何存档程序中打开它,你应该在那里找到.DAE。 / p>
它不是防弹的,但主要是有效的。一些提示:
在导出设置中,将Triangulate面朝上。双面通常是最好的,但有时您可能想要将其关闭。
您可能需要将纹理文件的大小调整为两个维度的非幂(例如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;
答案 1 :(得分: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);