2
私はこれをARKitで実行しています。試してみると三角形が表示され(非常に背が高い)、カメラの右側に2つ表示されます。私が持っている問題は、私がオブジェクトに画像素材を適用することができないということです私はそれは色だ変更できますが、イメージを適用しない:Scenekit - カスタムジオメトリにUIImageマテリアルを追加する
だから、この作品:
triangle.firstMaterial?.diffuse.contents = UIColor.red
しかし、これはしません。ここで
triangle.firstMaterial?.diffuse.contents = UIImage(named: "wallpaper.jpg")
はXcode9で新鮮ARKitプロジェクトから完全なのViewControllerコードです:
import UIKit
import SceneKit
import ARKit
class ViewController: UIViewController, ARSCNViewDelegate {
@IBOutlet var sceneView: ARSCNView!
override func viewDidLoad() {
super.viewDidLoad()
sceneView.delegate = self
let scene = SCNScene()
let triangle = SCNGeometry.triangleFrom(vector1: SCNVector3(x: 0.059511181, y: -0.181795284, z: -0.0939711183), vector2: SCNVector3(x: 0.113824688, y: -0.181780666, z: -0.0674673915), vector3: SCNVector3(x: 0.113824688, y: 1.8182193, z: -0.0674673915))
triangle.firstMaterial?.diffuse.contents = UIImage(named: "wallpaper.jpg")
let triangleNode = SCNNode(geometry: triangle)
triangleNode.name = "Triangle"
scene.rootNode.addChildNode(triangleNode)
sceneView.scene = scene
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// Create a session configuration
let configuration = ARWorldTrackingSessionConfiguration()
// Run the view's session
sceneView.session.run(configuration)
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
sceneView.session.pause()
}
}
extension SCNGeometry {
class func triangleFrom(vector1: SCNVector3, vector2: SCNVector3, vector3: SCNVector3) -> SCNGeometry {
let indices: [Int32] = [0, 1, 2]
let source = SCNGeometrySource(vertices: [vector1, vector2, vector3])
let element = SCNGeometryElement(indices: indices, primitiveType: .triangles)
return SCNGeometry(sources: [source], elements: [element])
}
}
私が含まれていない唯一のものは、テクスチャ画像ですが、ダウンロードされた画像はすべて行います。
おかげ
応答していただきありがとうございます。例を表示できますか? –
この記事はかなり人気があります:http://ronnqvi.st/custom-scenekit-geometry/ – mnuages
多くのおかげで、私は読んでいます。 –