如何将SketchUp模型导出到three.js?

时间:2013-06-05 18:07:23

标签: three.js sketchup

我已经通过Google SketchUp创建了一个模型,我想将其导出到three.js以节省一些时间。因为我认为使用SketchUpthree.js更容易然后有人能告诉我怎么做吗?非常感谢你!

2 个答案:

答案 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);