У меня есть узел, который я извлекаю из SCNScene. У меня есть информация об этом, но я смущен одной вещью - как рассчитывается ограничивающая рамка. Узел позиционируется, как только он будет загружен в векторе 0,0,0 с помощью:SCNNode getBoundingBoxMin
[myNode setPosition: SCNVector3Make(0, 0, 0)];
Тем не менее, по-прежнему ограничивающий прямоугольник сообщает о min.x -1.
Как это может быть, если я только что положил его на 0? Кроме того, не имеет значения, какие векторные значения я даю, у него всегда есть min.x of -1 - несмотря на то, что узел действительно перемещается по экрану, как ожидалось.
Чтобы уточнить: если у вас есть куб 2 единицы по ширине, его ограничивающий прямоугольник min и max углы будут * всегда * быть '(-1, -1, -1)' и '(1, 1, 1)', * независимо от положения узла *. Ограничивающая рамка всегда выражается в системе координат приемника, и поскольку размеры куба остаются неизменными, ограничивающая рамка узла остается прежней. Вам нужно будет использовать утилиты преобразования, чтобы выразить эти координаты в мировом пространстве. – mnuages
Правильно. :) Итак, если вы хотите, чтобы ограничительная рамка вашего узла в системе координат родителя, вы должны [конвертировать] (https://developer.apple.com/library/prerelease/ios/documentation/SceneKit/Reference/SCNNode_Class/ index.html # // apple_ref/occ/instm/SCNNode/convertPosition: fromNode :) те векторы. Или, если это единственный дочерний элемент родительского узла, спросите родительский узел (или узел представления родителя) для * его * ограничивающего блока. – rickster
Спасибо, ребята. Вы упомянули, что куб из 2 единиц всегда начинался с (-1, -1, -1). Это потому, что оно сосредоточено на (0,0,0), когда вы его впервые разместите? Следовательно, 1 единица с обеих сторон от нуля. – Roo