sceneView
にロードされた3dオブジェクトの値を2本の指でスケーリングしながら取得しようとしています。私は正しくrotation
、position
とorientation
を得ることができますが、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
}
ありがとうございます。私はあなたが実際にカメラの視点であることを指していることを理解しています。 xFovを使うとカメラのズームが見えます。では、カメラではなく、オブジェクトの回転とスケールをどのように制御するのですか?あなたが私に指摘できるスタックやチュートリアルはありますか? – SNos
パンとピンチのためにシーンに独自のジェスチャ認識機能を追加し、翻訳と縮尺の値を使用します。オブジェクトではなくカメラを移動したいかもしれませんが、独自のジェスチャを使用すると、より多くの制御が可能になります。 –