2017-09-23 18 views
0

私はSCNSphereを表示しているアプリケーションを作成していますが、何らかの理由で、Appleが持っている組み込みのジオメトリを使用する代わりに、アセットからイメージを配置する方法を考え出しました。ですから、私の質問はSCNSphereの代わりにSceneKitアプリに表示されている画像を表示するにはどうすればいいですか? ありがとうございました。代わりにSCNSphereのSwift 3でSCNSphereの代わりに画像を表示する方法は?

let personGeo = SCNSphere(radius: 0.2) 
person = SCNNode(geometry: personGeo) 

let personMat = SCNMaterial() 
personMat.diffuse.contents = UIColor.cyan 
personGeo.materials = [personMat] 
person.position = SCNVector3Make(0, 1.1, 0) 


person.physicsBody = SCNPhysicsBody(type: SCNPhysicsBodyType.static, shape: SCNPhysicsShape(node: person, options: nil)) 
person.physicsBody?.categoryBitMask = bodyNames.Person 
person.physicsBody?.collisionBitMask = bodyNames.Coin 
person.physicsBody?.contactTestBitMask = bodyNames.Coin 
person.physicsBody?.isAffectedByGravity = false 

scene.rootNode.addChildNode(person) 
+0

を求めることを躊躇しないでください あなたが正確に何をしたいですか? SceneKitで表示されるオブジェクトの種類を変更するには、personGeoを別の種類のSCNGeometryに設定する必要があります。たとえば、SCNPlane –

+0

は、ビルドされたジオメトリを置く代わりに、アセットからイメージを表示したい。方法はありますか? –

答えて

2

ノードをSceneKitでレンダリングするには、最初に、ノードにジオメトリデータ(SCNGeometryクラスを参照)を添付する必要があります。

SceneKitは既にあなたのためのものをいくつか用意しています。SCNPlaneを使用して、希望する画像を表示することができます。

次に、イメージを表示するマテリアルをノードに与える必要があります。おそらく、これと同様の

何か:

let scene = SCNScene(named: "art.scnassets/ship.scn")! 
let image = UIImage(named: "nameOfYourImage")! 
let imageRatio = image.size.height/image.size.width 
let desiredPlaneWidth: CGFloat = 1 
let planeGeometry = SCNPlane(width: desiredPlaneWidth, height: desiredPlaneWidth*imageRatio) // We make a plane that has the same aspect ratio as the image we want to display with it 
let planeMaterial = SCNMaterial() 
planeMaterial.emission.contents = image // Emission makes 
planeMaterial.isDoubleSided = true // Otherwise plane would only be visible from one side 

は、具体的な詳細

+0

イメージを表示するために 'SCNPlane'を適用するコードをいくつか表示できますか? –

+0

@ user8651879マテリアルとプレーンの作成方法に関する私の答えを更新しました! :) –

+0

ありがとう、それは素晴らしい作品です。 –

0

、SCNPlaneを作成し、それにSCNMaterialを追加し、画像にその.diffuse.contentsを設定します。

また、イメージがカメラに向いていることを確認するには、LookAt制約をSCNPlaneノードに追加してカメラを見ます(ターゲットはシーンビューのpointOfViewノードです)。

関連する問題