2010-07-27 35 views
1

我必须在Google Sketchup中渲染几千个多边形的网格。我发现add_face随着模型中的面数增加而趋于变慢。我相信这是由于Sketchup在幕后运行的一些边缘检测算法。希望应该有某种方法来抑制Sketchup正在进行的边缘检测或其他处理,直到将所有面添加到模型中。在SketchUp中创建面和边对象的最快方法

我发现add_faces_from_meshfill_from_mesh要快很多,但我最终由Surface实例,而不是FaceEdge对象我找的网格。

那么,在Sketchup中生成由FaceEdge对象组成的模型的最快方法是什么?有没有办法从Surface对象中生成EdgeFace对象?

更新:我刚才读here,使用Model::start_transactionModel::commit_transaction可以用来加快速度,但我发现这些改进并不十分显著。还有什么我可以做的?

回答

1

我发现add_faces_from_meshfill_from_mesh要快很多,但我 结束了由 Surface实例,而不是FaceEdge对象我找的网格。

调用add_faces_from_meshfill_from_mesh有明确设置为零正确构建FaceEdge对象smooth_flags参数。 Sketchup Documentation声称smooth_flags默认为零...我的试验显示,否则。

1

只是澄清 - add_faces_from_meshfill_from_mesh确实添加了边和面 - 但是,默认行为是创建一个具有柔和和平滑边缘的网格。当您有一组通过软边连接的面时,它们将被SketchUp视为曲面,当您选择它们​​时,实体信息窗口将会显示“曲面”。 但是 - 在内部它仍然只是一组边和面 - SketchUp没有Surface实体。

至于Model::start_transaction - 您必须为第二个disable_ui参数指定true,才能看到任何速度增益。但是,正如你已经注意到的那样,SU在添加实体方面速度很慢 - 你添加的实体集合越多,实体越慢。添加实体的绝对最快方式是fill_from_mesh

相关问题