首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在3D Graphics API中画一条线?

如何在3D Graphics API中画一条线?
EN

Stack Overflow用户
提问于 2017-03-26 20:34:29
回答 3查看 804关注 0票数 2

我刚开始使用Open 3D图形API,我只想在给定的三维坐标之间画一条线。假设第一点是0,0,0,第二点是1,1,1。这个API的文档和例子非常糟糕,无法正确地得到它。我在使用。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-03-26 22:56:29

假设您只是询问如何创建线条形状--只需将坐标存储在SoVertexProperty节点中,将该节点设置为SoLineSet节点,然后将该线集添加到场景图中。Open将假设您希望使用给定的所有坐标,所以这就是您需要做的全部工作。对于两个坐标,使用set1Value方法可能是最简单的,但也可以从数组中设置坐标。您没有说明使用的是哪种语言,所以我将在C++中显示代码(除了语言语法差异外,C#和Java本质上是一样的):

代码语言:javascript
代码运行次数:0
运行
复制
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 );
票数 3
EN

Stack Overflow用户

发布于 2017-03-27 13:55:04

如果您只需要设置基本颜色( OpenGL &OpenGL称之为漫射颜色),这通常是直线几何学的情况,那么您可以直接在SoVertexProperty节点中设置它。

例如,若要在前面的示例“red”中创建行,请添加以下行:

代码语言:javascript
代码运行次数:0
运行
复制
vprop->orderedRGBA = 0xff0000ff; // By default applies to all vertices

或者,更方便地:

代码语言:javascript
代码运行次数:0
运行
复制
vprop->orderedRGBA = SbColor(1,0,0).getPackedValue();

如果您需要对几何图形的外观进行更多的控制,请在几何节点之前向场景图添加一个SoMaterial节点。

票数 4
EN

Stack Overflow用户

发布于 2018-03-24 20:45:21

线宽是通过创建一个SoDrawStyle属性节点并将其添加到几何节点之前/之上的场景图来指定的。如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
SoDrawStyle* style = new SoDrawStyle();
style->lineWidth = 3;  // "pixels" but see OpenGL docs
parent->addChild( style );
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43034213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档