Pyramid3D 업그레이드 실패와 ND3D
기존에 나와있는 3D 라이브러리들은 복잡한 기능에 치중하여 느리고 사용할 때 호스트 코드가 비대해지는 불편함이 있었다. 사실 사용하는 목적이 엄청난 3D를 렌더링하는 경우도 있지만 그저 간단한 입체효과를 사용할 때도 있는게 아닌가.
플10API는 DisplayObject를 간단히 3D위상으로 바꿔주는 능력이 있으니 그 정도 기능만 라이브러리화 해서 간단히 사용할 수 있으면 좋겠다는 생각을 늘 했고, 그러한 간단한 프레임웍이 pyramid3D였다.
하지만 제작한 버전의 가장 큰 문제가 컨테이너와 엘레멘트가 다른 부모로부터 상속하기 때문에 엘레멘트안에 컨테이너를 포함할 수 없다는 점과 엘레멘트가 다른 엘레멘트를 포함하는 능력이 커지면서 사실 상 컨테이너의 의미가 무의미해진 점이다.
이러한 프레임웍의 클래스 구조변경과 함께 기존에 느리게 만들었던 알고리즘을 대거 개선할 목적으로 3일간에 걸쳐 pyramid3d 1.5 작업에 돌입했으나, 실패했다. 이유는 다른게 아니라 transform.getRelativeMatrix3D( root ) 의 문제를 해결하지 못해서다. 네이티브3D의 핵심적인 엔진의 기능은 z소트인데 자식의 자식을 연속으로 소팅해가는 경우 현재 자신의 전역에서의 정확한 z값을 알기 위해 저 변환을 사용한다. 이 변환은 보통 정상적으로 작동하지만 자식이 rotationX, Y, Z가 적용되는 경우에는 적용되기 전 기준으로 z값을 반환하는 오류가 있다.