ios - 如何更改绘制线的粗细?
问题描述
private func lineFrom(vector vector1: SCNVector3, toVector vector2: SCNVector3) -> SCNGeometry {
let indices: [Int32] = [0,1]
let source = SCNGeometrySource(vertices: [vector1, vector2])
let element = SCNGeometryElement(indices: indices, primitiveType: .line)
return SCNGeometry(sources: [source], elements: [element])
}
@objc private func tapped(rec: UITapGestureRecognizer) {
let hitTransform = SCNMatrix4(hit.worldTransform)
let hitPoint = SCNVector3Make(hitTransform.m41 , hitTransform.m42, hitTransform.m43)
if points.start == nil{
print("start touch")
points.start = hitPoint
print(points.start!.x, points.start!.y, points.start!.z)
}
else{
points.end = hitPoint
print(points.end!.x, points.end!.y, points.end!.z
line.geometry = lineFrom(vector: points.start!, toVector: points.end!)
line.geometry?.firstMaterial?.diffuse.contents = UIColor.red
line.geometry?.firstMaterial?.isDoubleSided = true
sceneView.scene.rootNode.addChildNode(line)
func renderer(_ renderer: SCNSceneRenderer, willRenderScene scene: SCNScene, atTime time: TimeInterval) {
glLineWidth(80)
}
canPlacePoint = false
}
}
}
}
我触摸两点以保存位置并尝试绘制连接两点的线。虽然画了线,但触摸点的位置不正确。我也使用了glLineWidth(),因为我想改变绘制线条的粗细,但是它并没有改变。我应该怎么办?
解决方案
两个值得尝试的想法:
- 可以使用旋转的 SCNCapsule 或 SCNBox 绘制直线
- 用图像文件填充material.diffuse.contents,使用透明图像可以绘制许多有趣的形式
推荐阅读
- javascript - 如何返回正值
- palantir-foundry - 如何在 Code Workbook 中访问数据集的旧事务?
- python - Tensorflow:使用 GPU 训练 Keras 模型
- python - python检查浮点值是否丢失
- javascript - Ember 2 Web App 使用来自 .Net Core 3 API 的 SignalrR
- reactjs - 加载网页后 CSS 未呈现一秒钟
- c++ - c++ LoadLibrary 和 GetProcAddress 来自外部 DLL
- filter - 根据过滤器创建度量
- ios - Apple Pay didAuthorizePayment 委托和处理付款
- c - 估计 C 函数的未命中率