第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

旋轉(zhuǎn)SCNCamera節(jié)點,查看假想球體周圍的對象

旋轉(zhuǎn)SCNCamera節(jié)點,查看假想球體周圍的對象

胡說叔叔 2019-08-26 19:13:06
旋轉(zhuǎn)SCNCamera節(jié)點,查看假想球體周圍的對象我在位置(30,30,30)有一個SCNCamera,在位于(0,0,0)位置的對象上有一個SCNLookAtConstraint。我正在嘗試使用A UIPanGestureRecognizer讓相機圍繞虛擬球體上的物體旋轉(zhuǎn),同時保持相機和物體之間的半徑。我假設(shè)我應(yīng)該使用四元數(shù)預(yù)測,但我在這方面的數(shù)學(xué)知識很糟糕。我知道的變量是x&y平移+我試圖保留的半徑。我在Swift中編寫了這個項目,但Objective-C中的答案也同樣被接受(希望使用標(biāo)準(zhǔn)的Cocoa Touch Framework)。哪里:private var cubeView : SCNView!;private var cubeScene : SCNScene!;private var cameraNode : SCNNode!;這是我設(shè)置場景的代碼:// setup the SCNViewcubeView = SCNView(frame: CGRectMake(0, 0, self.width(), 175));cubeView.autoenablesDefaultLighting = YES;self.addSubview(cubeView);// setup the scenecubeScene = SCNScene();cubeView.scene = cubeScene;// setup the cameralet camera = SCNCamera();camera.usesOrthographicProjection = YES;camera.orthographicScale = 9;camera.zNear = 0;camera.zFar = 100;cameraNode = SCNNode();cameraNode.camera = camera;cameraNode.position = SCNVector3Make(30, 30, 30)  cubeScene.rootNode.addChildNode(cameraNode)// setup a target objectlet box = SCNBox(width: 10, height: 10, length: 10, chamferRadius: 0);let boxNode = SCNNode(geometry: box)cubeScene.rootNode.addChildNode(boxNode)// put a constraint on the cameralet targetNode = SCNLookAtConstraint(target: boxNode);targetNode.gimbalLockEnabled = YES;cameraNode.constraints = [targetNode];// add a gesture recogniserlet gesture = UIPanGestureRecognizer(target: self, action: "panDetected:");cubeView.addGestureRecognizer(gesture);以下是手勢識別器處理的代碼:private var position: CGPoint!;internal func panDetected(gesture:UIPanGestureRecognizer) {    switch(gesture.state) {    case UIGestureRecognizerState.Began:        position = CGPointZero;    case UIGestureRecognizerState.Changed:        let aPosition = gesture.translationInView(cubeView);        let delta = CGPointMake(aPosition.x-position.x, aPosition.y-position.y);        // ??? no idea...        position = aPosition;    default:        break    }}謝謝!
查看完整描述

3 回答

?
忽然笑

TA貢獻1806條經(jīng)驗 獲得超5個贊

如果您想使用手勢識別器實現(xiàn)rickster的答案,則必須保存狀態(tài)信息,因為您只會獲得相對于手勢開頭的翻譯。我在班上加了兩個vars

var lastWidthRatio: Float = 0var lastHeightRatio: Float = 0

并實現(xiàn)了他的旋轉(zhuǎn)代碼如下:

func handlePanGesture(sender: UIPanGestureRecognizer) {
    let translation = sender.translationInView(sender.view!)
    let widthRatio = Float(translation.x) / Float(sender.view!.frame.size.width) + lastWidthRatio    let heightRatio = Float(translation.y) / Float(sender.view!.frame.size.height) + lastHeightRatio    self.cameraOrbit.eulerAngles.y = Float(-2 * M_PI) * widthRatio    self.cameraOrbit.eulerAngles.x = Float(-M_PI) * heightRatio    if (sender.state == .Ended) {
        lastWidthRatio = widthRatio % 1
        lastHeightRatio = heightRatio % 1
    }}


查看完整回答
反對 回復(fù) 2019-08-26
  • 3 回答
  • 0 關(guān)注
  • 980 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號