我是Open Inventor 3D Graphics API的新手,我只想在给定的三维坐标之间画一条线。让我们说第一点是0,0,0,第二点是1,1,1。该API的文档和示例非常糟糕,无法正确完成。我正在使用Visual Studio。
答案 0 :(得分:2)
如果您只需要设置基色(Open Inventor和OpenGL调用漫反射颜色)(通常是线几何的情况),则可以直接在SoVertexProperty节点中设置它。
例如,要将前一个示例中的行设为红色',请添加以下行:
vprop->orderedRGBA = SbColor(1,0,0).getPackedValue();
或更方便:
$_SERVER['DOCUMENT_ROOT']
如果需要更多地控制几何体的外观,请在几何体节点之前将SoMaterial节点添加到场景图中。
答案 1 :(得分:1)
假设您刚刚询问有关创建线形的信息 - 只需将坐标存储在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 );
答案 2 :(得分:1)
通过创建SoDrawStyle属性节点并将其添加到几何节点之前/之上的场景图来指定线宽。像这样:
SoDrawStyle* style = new SoDrawStyle();
style->lineWidth = 3; // "pixels" but see OpenGL docs
parent->addChild( style );