我看到有两种选择,但都有问题:
1. 使用带有小半径的SCNCylinder,长度为| pointA-pointB |,然后将其定位/旋转。 2. 使用自定义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”太小,你根本看不到这条线。目前为止,它在技术上是一个矩形,而不是我想要的线,这可能会导致小的图形故障,如果我想画多个连接线。