我有两个 SCNVector3 类型的点(我们称它们为 pointA 和 pointB)。我想在他们之间画一条线。似乎应该很容易,但找不到方法。
我看到两个选项,都有问题:
使用半径非常小的 SCNCylinder,长度为 |pointA-pointB| 然后定位/旋转它。
使用自定义 SCNGeometry 但不确定如何;也许必须定义两个三角形来形成一个非常薄的矩形?
似乎应该有一种更简单的方法来做到这一点,但我似乎找不到。
编辑:使用三角形方法可以在 (0,0,0) 和 (10,10,10) 之间画一条线:
CGFloat delta = 0.1;
SCNVector3 positions[] = { SCNVector3Make(0,0,0),
SCNVector3Make(10, 10, 10),
SCNVector3Make(0+delta, 0+delta, 0+delta),
SCNVector3Make(10+delta, 10+delta, 10+delta)};
int indicies[] = {
0,2,1,
1,2,3
};
SCNGeometrySource *vertexSource = [SCNGeometrySource geometrySourceWithVertices:positions count:4];
NSData *indexData = [NSData dataWithBytes:indicies length:sizeof(indicies)];
SCNGeometryElement *element = [SCNGeometryElement geometryElementWithData:indexData primitiveType:SCNGeometryPrimitiveTypeTriangles primitiveCount:2 bytesPerIndex:sizeof(int)];
SCNGeometry *line = [SCNGeometry geometryWithSources:@[vertexSource] elements:@[element]];
SCNNode *lineNode = [SCNNode nodeWithGeometry:line];
[root addChildNode:lineNode];
但是有问题:由于法线,你只能从一侧看到这条线!从另一边是看不见的。此外,如果“delta”太小,您根本看不到这条线。事实上,它在技术上是一个矩形,而不是我想要的线,如果我想绘制多条连接线,这可能会导致小的图形故障。