2017-06-16 18 views
0

sceneViewにロードされた3dオブジェクトの値を2本の指でスケーリングしながら取得しようとしています。私は正しくrotationpositionorientationを得ることができますが、scaleは常に1にとどまります。Swift 3 - SceneKit 3Dモデルのスケール値を取得する

どうすればこの値を取得できますか?

var update = Timer() 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 

     sceneView.scene = SCNScene(named: "PKB2"); 
     sceneView.debugOptions.insert(SCNDebugOptions.showWireframe) 
     sceneView.autoenablesDefaultLighting = true 
     sceneView.allowsCameraControl = true 

     update = Timer.scheduledTimer(timeInterval: 0.01, target: self, selector: #selector(self.updateFunc), userInfo: nil, repeats: true) 

    } 

func updateFunc() { 

     var eulerAngles_x = Double((sceneView.pointOfView?.eulerAngles.x)!) * (180.0/Double.pi) 
     if(eulerAngles_x < 0) {eulerAngles_x += 360.0} 

     var eulerAngles_y = Double((sceneView.pointOfView?.eulerAngles.y)!) * (180.0/Double.pi) 
     if(eulerAngles_y < 0) {eulerAngles_y += 360.0} 

     var eulerAngles_z = Double((sceneView.pointOfView?.eulerAngles.z)!) * (180.0/Double.pi) 
     if(eulerAngles_z < 0) {eulerAngles_z += 360.0} 

     x_lbl.text = String(format:"%.2f", eulerAngles_x) 
     y_lbl.text = String(format:"%.2f", eulerAngles_y) 
     z_lbl.text = String(format:"%.2f", eulerAngles_z) 
     w_lbl.text = String(format:"%.2f", (sceneView.pointOfView?.scale.z)!) 

     print(sceneView.pointOfView?.scale) // not changing while scaling the object 

    } 

答えて

0

あなたがカメラではなく、オブジェクトを操作しているsceneView.allowsCameraControl = trueを使用。あなたの3Dオブジェクトは動いておらず、カメラは動き回っています。

したがって、それはスケールが変更されていないとして、カメラの規模を確認する間違っている、それだけでズームだ。

を代わりにsceneView.pointOfView?.camera.xFovsceneView.pointOfView?.camera.yFovをチェックしてみます。このプロパティの主な目的は アプリケーションのデバッグを支援するためにあることを

注:


はまた、それはallowsCameraControl状態のためのドキュメントことは注目に値します。あなたのアプリケーションに適した独自のカメラコントローラ を実装することができます。

+0

ありがとうございます。私はあなたが実際にカメラの視点であることを指していることを理解しています。 xFovを使うとカメラのズームが見えます。では、カメラではなく、オブジェクトの回転とスケールをどのように制御するのですか?あなたが私に指摘できるスタックやチュートリアルはありますか? – SNos

+0

パンとピンチのためにシーンに独自のジェスチャ認識機能を追加し、翻訳と縮尺の値を使用します。オブジェクトではなくカメラを移動したいかもしれませんが、独自のジェスチャを使用すると、より多くの制御が可能になります。 –

関連する問題