1

我必须在 Google Sketchup 中渲染数千个多边形的网格。我发现add_face随着模型中面孔数量的增加,这往往会变慢。我相信这是由于 Sketchup 在幕后运行的一些边缘检测算法。希望有一些方法可以抑制 Sketchup 正在执行的边缘检测或其他处理,直到所有面都添加到模型中。

我发现add_faces_from_mesh并且fill_from_mesh要快得多,但我最终得到了一个由Surface实例组成的网格,而不是我正在寻找的对象FaceEdge

那么,在 Sketchup中生成由Face和对象组成的模型的最快方法是什么?Edge有没有办法从对象Edge生成对象?FaceSurface

更新:我刚刚在这里读到使用Model::start_transactionModel::commit_transaction可以用来加快速度,但我发现改进不是很显着。还有什么我可以做的吗?

4

2 回答 2

1

我发现add_faces_from_mesh并且 fill_from_mesh要快得多,但我最终得到了一个由 Surface实例组成的网格,而不是我正在寻找的对象FaceEdge

调用add_faces_from_mesh或参数显fill_from_meshsmooth_flags设置为零正确构造FaceEdge对象。Sketchup 文档声称smooth_flags默认为零……我的试验表明并非如此。

于 2010-07-29T09:55:45.873 回答
1

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

至于Model::start_transaction- 您必须为第二个disable_ui参数指定 true 才能看到任何速度增益。但是正如您所注意到的,SU 添加实体的速度非常慢 - 您添加的实体集合中的实体越多,它的速度就越慢。添加实体的绝对最快的方法是fill_from_mesh.

于 2010-12-26T15:07:37.487 回答