我必须在Google Sketchup中渲染几千个多边形的网格。我发现add_face
随着模型中面数的增加而趋于变慢。我相信这是由于Sketchup在幕后运行的一些边缘检测算法。希望有一些方法可以抑制Sketchup正在进行的边缘检测或其他处理,直到所有面都添加到模型中。
我发现add_faces_from_mesh
和fill_from_mesh
要快得多,但我最终得到的网格包含Surface
个实例,而不是Face
和Edge
个对象我在找。
那么,在Sketchup中生成由Face
和Edge
个对象组成的模型的最快方法是什么?有没有办法从Edge
对象生成Face
和Surface
个对象?
更新:我刚刚阅读here使用Model::start_transaction
和Model::commit_transaction
可以加快速度,但我发现这些改进不是很明显。还有什么我能做的吗?
答案 0 :(得分:1)
我找到了
add_faces_from_mesh
和fill_from_mesh
要快得多,但我 最终得到一个由网格组成的网格Surface
个实例而不是Face
和我正在寻找的Edge
个对象。
在add_faces_from_mesh
参数显式设置为零的情况下调用fill_from_mesh
或smooth_flags
可正确构建Face
和Edge
个对象。 Sketchup Documentation声称smooth_flags
默认为零......我的试验表明不然。
答案 1 :(得分:1)
只是为了澄清 - add_faces_from_mesh
和fill_from_mesh
确实添加了边和面 - 但是,默认行为是创建一个边缘柔和光滑的网格。当您有一组通过软边连接的面时,它们将被SketchUp视为一个曲面,当您选择它们时,实体信息窗口将显示“曲面”。
但是 - 在内部它仍然只是一组边和面 - SketchUp没有Surface实体。
对于Model::start_transaction
- 您必须为第二个disable_ui
参数指定true才能看到任何速度增益。但正如您所注意到的,SU在添加实体方面非常缓慢 - 您添加的实体集合中的实体越多,它就越慢。添加实体的绝对最快方式是fill_from_mesh
。