在3D中增加一条线?

参照这个问题

使用SceneKit在两点之间画一条线

我正在3D中绘制一条线,并希望通过使用此代码使其更厚

func renderer(aRenderer: SCNSceneRenderer, willRenderScene scene: SCNScene, atTime time: NSTimeInterval) { //Makes the lines thicker glLineWidth(20) } 

但它不工作,iOS 8.2。

有另一种方法吗?

更新

从文档

https://developer.apple.com/library/prerelease/ios/documentation/SceneKit/Reference/SCNSceneRendererDelegate_Protocol/index.html#//apple_ref/occ/intfm/SCNSceneRendererDelegate/renderer:updateAtTime :

我没有添加SCNSceneRendererDelegate和一个有效的线宽,但仍然无法获得线宽增加。

你不能指定任何数字到glLineWidth() 。 您可以通过以下方法检查glLineWidth()的可能值的范围:

 glGetFloatv(GL_LINE_WIDTH_RANGE,sizes); 

一个疯狂的想法是使用一个圆柱画线;)。 我使用它时,我想有良好的和可控的线,但我不知道一个方便的OpenGl函数来这样做。

@亚历山大:在这里你去我的缸的实施。 这有点乏味,但这是我目前所拥有的。 如果给定点p0p1 ,Vector normal=(p1-p0).normalize()将是圆柱体的轴。 select点p2不在vectorNormal上。

 q=(p2-p0).normalize(); normal.crossproduct(q)=v0; normal.crossproduct(v0)=v1; 

有了这两个向量,你可以使用下面的函数(圆柱体是一堆圆圈)沿着圆柱体的轴线堆叠任意半径的圆:

 public Circle make_circle(Point center, Vector v0, Vector v1, double radius) { Circle c; for (double i = 0; i < 2 * Math.PI; i += 0.05) { Point p = new Point(center + radius * Math.Cos(i) * v0 + radius * Math.Sin(i) * v1); c.Add(p); } return c; } 

您只需要沿圆柱轴使用此function制作圆形:

 List<Circle> Cylinder = new List<Circle>(); for(double i=0;i<1;i+=0.1) { Cylinder.add( make_circle(P0+i*normal, v0, v1,radius); } 

现在你应该连续两个圆圈,并通过采样统一连接四边形。

我已经实现了这种方式,因为我已经实现了圆圈。

一个简单的方法来实现是沿着X轴的圆形,然后旋转和平移到p0 ,使其与正常或使用gluCinderinder如果你是谷歌的风扇….

希望它适合你。