2016-10-21 11 views
0

私は非常にSceneKitに慣れており、あなたの助けは本当にありがとう!
スーパービューの中央にあるUIViewに200x200サイズのSCNViewがあります。 SCNCylinderが完全なSCNViewをカバーするように、SCNCylinderを内部に配置したいと思います。私はこれらのScenekitのすべてのビューがメートルで定義されていることを読んだので、私は自分の画面のサイズと SCNCylinderとの間にどのような関係を形成するのですか?SCNView全体をカバーするためにSCNNodeを配置する方法は?

私が試した:

var coinNode = SCNNode() 
let coinGeometry = SCNCylinder(radius: 100, height: 2) 
coinNode = SCNNode(geometry: coinGeometry) 
coinNode.position = SCNVector3Make(0, 0, 0) 
coinScene.rootNode.addChildNode(coinNode) 

let rotate90AboutZ = SCNAction.rotateByX(-CGFloat(M_PI_2), y: 0.0, z: CGFloat(M_PI_2), duration: 0.0) 
coinNode.runAction(rotate90AboutZ) 
ibOutletScene.scene = coinScene 

をしかし、これは私のcoinSceneとibOutletScene間のマージンを残します。このスペースを削除するにはどうすればよいですか?

私はまた、カメラの追加を試みた:

let cameraNode = SCNNode() 
cameraNode.camera = SCNCamera() 
cameraNode.position = SCNVector3Make(0, 0, 100) 
coinScene.rootNode.addChildNode(cameraNode) 

をしかし、私はこれでランダムな行動を見てcoinNodeが隠されます!カメラをどのように配置すればよいですか?または、ibOutletSceneから余分なスペースを削除する他の方法はありますか?

編集: これはカメラを追加しないと表示されます。赤いシーンと緑のコインの間にはマージンがあります。私はコインのサイズを複数試しましたが、カメラを追加しない限り、この余白を取り除くことはできません。しかし、私がカメラを追加すると、別の問題が発生し、このスクリーンショットの下に記載されています。 Red color is the scene and green coin, how can I remove the margin between the two

私はカメラを追加しないと、コインの回転アニメーションは完全に機能しますが、カメラを追加すると回転が拡大され、アニメーションで再び小さくなります。サイズを大きくすることなく、軸上でどのように回転させることができますか? 私はコインを回転するために次のコードを使用しています: 同じコードはカメラなしでうまく動作しますが、カメラを追加した後はコインを拡大します。スナップショットをチェックアウトします。

let rotate = SCNAction.rotateByX(0, y: -2 * CGFloat(M_PI_2), z: 0, duration: 2) 
    coinNode.runAction(rotate) 

enter image description here

答えて

0

ランダム行動は、あなたの最初のコードスニペットの最後の行によって引き起こされている可能性があります。アニメーションを開始してから、シーンをビューに追加します。

代わりに、シーンを作成してビューにアタッチし、アニメーションを開始します。アクションの持続時間を0以外に設定すると、より快適な移行が実現します。

余分なスペースについては、スクリーンショットを投稿するかどうかを理解するのに役立ちます。しかし、あなたは三角法のビットを行う必要があります。

あなたは硬貨で塞がれていて、途中で回転しているシーンがあるようですね。実際のオブジェクトで自分自身をシミュレートします。あなたの机の端に目を置きます。あなたの目からコインを出す。あなたの机の上の特定のオブジェクトをもっと遠くにブロックするためには、そのコインがどれだけ離れていなければなりませんか?

SceneKitでは、SCNCameraの視野を照会することができます。あなたはコインのサイズとビューのサイズを知っています。あなたのコインの投影された直径に必要なカメラからの距離をあなたのビューの幅と同じになるように計算します。そこにコインを入れてください。

+0

このアニメーションは、XY平面上でシリンダを位置合わせするためのアニメーションです。したがって、0の継続時間とそのラインは正常に動作しています。 – Anshuman

+0

スナップショットを含むように質問を編集しました。 – Anshuman

関連する問題