2015-02-06 5 views
0

SCNScene에서 추출중인 노드가 있습니다. 그것에 대한 정보가 있지만 경계 상자 계산 방법에 대해 혼란스러워합니다. 이를 사용하여 벡터 0, 0, 0에로드되면 노드는 위치 :SCNNode getBoundingBoxMin

[myNode setPosition: SCNVector3Make(0, 0, 0)]; 

그러나, 경계 상자는 여전히 -1 min.x 보고서.

방금 ​​0에 위치시킨 경우 어떻게 될까요? 또한 노드가 실제로 화면에서 예상대로 움직이더라도 벡터 값을 제공하는 것은 중요하지 않으며 항상 min.x가 -1입니다.

답변

1

그것은 당신이 그것으로 무슨 일을하는지 장면에있어 무엇에 대한 자세한 정보없이 확실히 대답 어렵지만, 아마 이러한 문제 중 하나 또는 모두의 :

경계 상자는 당신에게 노드의 범위를 알려줍니다 콘텐츠, 위치가 아닙니다. 예 너비가 2 단위 인 큐브가 (0, 0, 0)에 있으면 경계 상자의 최소 및 최대 모서리는 (-1, -1, -1)(1, 1, 1)이됩니다.

노드를 이동하는 데 사용하는 트릭에 따라 노드 자체의 위치가 변경되지 않을 수도 있습니다. SCNAction s, CAAnimation 및 물리는 모두 노드 계층의 개별 복사본에서 작동합니다. (부분적으로 암시 적 애니메이션을 지원하는 것입니다. 예를 들어 노드의 position을 설정하면 현재 위치에서 설정 한 위치로 애니메이션이 표시되지만 여전히 position을 읽을 수 있으며 설정 한 값이 될 수 있습니다 to).

노드의 presentationNode 속성으로이 별도의 계층 구조를 얻습니다. 프리젠 테이션 노드에 테두리 상자를 요청하면 위치/범위가 작업/애니메이션/물리의 영향을 받아 현재 렌더링 된 것으로 표시됩니다.

+0

정교하게 : 너비가 2 단위 인 큐브가있는 경우 경계 상자의 최소 및 최대 모서리는 항상 ((-1, -1, -1) 및 (1, 1, 1)'* 독립적으로 노드의 위치 *. 경계 상자는 항상 수신기의 좌표계로 표현되며 큐브 차원은 그대로 유지되므로 노드의 경계 상자는 그대로 유지됩니다. 변환 유틸리티를 사용하여 월드 공간에서 이러한 좌표를 표현해야합니다. – mnuages

+0

오른쪽. :) 부모의 좌표계에서 노드의 경계 상자를 원한다면 [convert] (https://developer.apple.com/library/prerelease/ios/documentation/SceneKit/Reference/SCNNode_Class/)해야합니다. index.html # // apple_ref/occ/instm/SCNNode/convertPosition : fromNode :) 해당 벡터. 또는 부모 노드의 유일한 자식 인 경우 부모 노드 (또는 부모의 표시 노드)에 해당 경계 상자가 있는지 물어보십시오. – rickster

+0

감사합니다. 당신은 2 단위의 큐브가 항상 (-1, -1, -1)에서 시작할 것이라고 언급합니다. 첫 번째로 놓았을 때 (0, 0, 0)을 중심으로했기 때문입니까? 따라서 1 단위는 0입니다. – Roo