如何在Open Inventor 3D Graphics API中绘制线条?

时间:2017-03-26 20:34:30

标签: graphics openinventor coin3d

我是Open Inventor 3D Graphics API的新手,我只想在给定的三维坐标之间画一条线。让我们说第一点是0,0,0,第二点是1,1,1。该API的文档和示例非常糟糕,无法正确完成。我正在使用Visual Studio。

3 个答案:

答案 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 );