我是 Open Inventor 3D Graphics API 的新手,我只想在给定的 3-D 坐标之间画一条线。假设第一个点是 0,0,0,第二个点是 1,1,1。这个 API 的文档和示例真的很糟糕,并且无法正确显示。我正在使用 Visual Studio。
问问题
686 次
3 回答
4
如果您只需要设置基本颜色(Open Inventor & OpenGL 称之为漫反射颜色),这通常是线几何的情况,那么您可以直接在 SoVertexProperty 节点中进行设置。
例如,要将前面示例中的行设为“红色”,请添加以下行:
vprop->orderedRGBA = 0xff0000ff; // By default applies to all vertices
或者,更方便的是:
vprop->orderedRGBA = SbColor(1,0,0).getPackedValue();
如果您需要对几何体的外观进行更多控制,请在几何体节点之前将 SoMaterial 节点添加到场景图中。
于 2017-03-27T13:55:04.567 回答
3
假设您只是询问创建线条形状 - 只需将坐标存储在 SoVertexProperty 节点中,将该节点设置在 SoLineSet 节点中,然后将线条集添加到场景图中。Open Inventor 将假定您要使用所有给定的坐标,这就是您需要做的一切。对于两个坐标,使用 set1Value 方法可能是最简单的,但您也可以从数组中设置坐标。您没有说您使用的是哪种语言,所以我将展示 C++ 中的代码(C# 和 Java 基本相同,除了语言语法差异):
SoVertexProperty* vprop = new SoVertexProperty();
vprop->vertex.set1Value( 0, 0,0,0 ); // Set first vertex to be 0,0,0
vprop->vertex.set1Value( 1, 1,1,1 ); // Set second vertex to be 1,1,1
SoLineSet* line = new SoLineSet();
line->vertexProperty = vprop;
sceneGraph->addChild( line );
于 2017-03-26T22:56:29.133 回答
3
线条粗细是通过创建SoDrawStyle属性节点并将其添加到几何节点之前/上方的场景图来指定的。像这样:
SoDrawStyle* style = new SoDrawStyle();
style->lineWidth = 3; // "pixels" but see OpenGL docs
parent->addChild( style );
于 2018-03-24T20:45:21.030 回答