Как расположить камеру по центру, чтобы она соответствовала 3D-модели внутри SK3DNode в SceneKitIOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Как расположить камеру по центру, чтобы она соответствовала 3D-модели внутри SK3DNode в SceneKit

Сообщение Anonymous »

Я хочу иметь возможность центрировать 3D-модель внутри SK3DNode. У меня есть следующий код:

Код: Выделить всё

public extension SK3DNode {
static func forModel(_ model: SCNNode, size: CGSize) -> SK3DNode {
let scene = SCNScene()
let node3D = SK3DNode()
node3D.scnScene = scene
node3D.viewportSize = size

scene.rootNode.addChildNode(model)

let camera = SCNCamera()
let cameraNode = SCNNode()
cameraNode.camera = camera
node3D.pointOfView = cameraNode

cameraNode.constraints = [SCNLookAtConstraint(target: model)]
// TODO: adjust position to center fit the model
cameraNode.position = SCNVector3(x: 0, y: 0, z: 4)

return node3D
}
}
Я сделал следующее:

Код: Выделить всё

    let planeX = model.boundingSize.x
let planeY = model.boundingSize.y
let planeLength = max(planeX, planeY)
let angleInRadian = NumberUtil.degreeToRadian(degree: camera.fieldOfView)
let distance = planeLength / 2 / tan(angleInRadian/2)
Я получил приведенные выше расчеты на основе изображения в этом ответе: Положение камеры в зависимости от размера модели?
Это похоже на то, что я Хочу, но при расчете не учитывается размер и соотношение сторон области просмотра, поэтому я не думаю, что это правильно. Есть ли лучший способ вычислить это?
РЕДАКТИРОВАТЬ:
Здесь вы можете скачать пример проекта: https://drive.google.com /file/d/1W_v0jMR1w9SkP-__SlKcPfiRF9cpTyEb/view?usp=sharing
Когда вы запустите его, вы увидите 4 SK3DNode (см. 4 синие области на скриншоте ниже), а это (сверху вниз):
  • Высокое окно просмотра с широкой 3D-моделью внутри.
  • Высокое окно просмотра с высокой 3d-моделью внутри
  • Широкое окно просмотра с высокой 3d-моделью внутри
  • Широкое окно просмотра с широкой 3d моделью внутри
I хотите управлять камерой так, чтобы все 3D-модели располагались по центру области просмотра.
[img]https://i. sstatic.net/lQx4tKJ9.png[/img]


Подробнее здесь: https://stackoverflow.com/questions/791 ... n-scenekit
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как расположить камеру по центру, чтобы она соответствовала 3D-модели внутри SK3DNode в SceneKit
    Anonymous » » в форуме IOS
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Должен ли я использовать overlaySKScene или SK3DNode при смешивании SceneKit и SpriteKit?
    Anonymous » » в форуме IOS
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Должен ли я использовать overlaySKScene или SK3DNode при смешивании SceneKit и SpriteKit?
    Anonymous » » в форуме IOS
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Как расположить 2 кнопки по центру?
    Гость » » в форуме Javascript
    0 Ответы
    48 Просмотры
    Последнее сообщение Гость
  • Как расположить 2 кнопки по центру? [дубликат]
    Гость » » в форуме CSS
    0 Ответы
    62 Просмотры
    Последнее сообщение Гость

Вернуться в «IOS»