参考这个问题
我在3D中绘制一条线并希望使用此代码使其更厚
func renderer(aRenderer: SCNSceneRenderer, willRenderScene scene: SCNScene, atTime time: NSTimeInterval) {
//Makes the lines thicker
glLineWidth(20)
}
但它不起作用,iOS 8.2。
还有其他办法吗?
更新
来自文档
我确实添加了SCNSceneRendererDelegate
和有效的线宽,但仍无法增加线宽。
答案 0 :(得分:2)
@G亚历山大:在这里你进行我的圆柱体实施。这有点乏味,但这是我现在所拥有的。
如果您给我分p0
和p1
,则向量normal=(p1-p0).normalize()
将成为圆柱的轴。
拾取不在矢量Normal上的点p2。
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;
}
您只需沿圆柱轴使用此功能制作圆圈:
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
并使其与法线对齐,或者如果你是Glu的粉丝则使用gluCylinder .... / p>
希望它适合你。
答案 1 :(得分:1)
您无法为glLineWidth()
分配任何号码。
您可以通过以下方式检查glLineWidth()
的可能值范围:
glGetFloatv(GL_LINE_WIDTH_RANGE,sizes);
一个疯狂的想法是使用圆柱体绘制线条;)。当我想拥有漂亮且可控的线条时,我会使用它,但我不知道有一个方便的OpenGl函数。