오픈GL++
OpenGL++OpenGL++는 OpenGL 3D 그래픽 시스템 위에서 객체 지향 데이터 구조를 지원하는 C++로 작성된 그래픽 라이브러리였다.이 프로젝트는 SGI, IBM, Intel의 파트너십의 결과로 시작되었으며, 이후 디지털 장비 주식회사(Digital Equipment Corporation)가 설립되었다.자바3D 구현은 물론 OpenGL의 "베어 메탈" 지원보다 더 높은 수준의 API를 제공하기 위한 것이었다.[1]OpenGL++에 대한 작업은 SGI가 대신 마이크로소프트와 파트너십을 맺기로 결정하면서 끝났고, Fahrenheit 프로젝트로 이어졌고, 이 프로젝트 역시 죽었다.
배경
3D 시스템을 사용하는 대부분의 애플리케이션은 "세상"에 있는 개체를 장면 그래프라고 알려진 데이터 구조로 설명한다.씬(scene) 그래프는 일반적으로 일종의 트리 데이터 구조로 구성되며, 노드는 객체를 나타내고 가장자리는 세계의 다른 객체와의 관계를 나타낸다.예를 들어, 테이블은 여러 가장자리가 서로 연결되는 단일 "테이블" 물체, 테이블 상판, 다리 등으로 나타낼 수 있다.
3D 애플리케이션에서 고성능을 발휘하는 비결은 현재 카메라 위치와 방향을 고려할 때 실제로 볼 수 있는 물체를 결정하는 것이다.예를 들어, 카메라 뒤에 있는 물체는 그릴 필요가 없다.씬(scene) 그래프의 빠른 통과는 이러한 "culling" 연산이 신속하게 이루어지도록 하는 데 필수적이다.
씬(scene) 그래프는 일반적으로 개발자에게 맡겨 구현했으며, 성능 저하를 초래하는 불량 사례를 보는 것은 너무나 흔한 일이었다.SGI는 개발자가 고품질 장면 그래프를 제작할 수 있도록 돕기 위해 여러 프로젝트를 진행했지만, 이 중 다양한 이유로 널리 사용되는 것은 없었다.Open Inventor는 그러한 예 중 하나였으며, 장면 그래프를 간단하게 작성하기 위한 것이었지만 결과가 반드시 매우 높은 성능은 아니었다.OpenGL Performer는 '세계'에서 초고속 장면을 제작하고 매우 많은 물체를 지원하기 위한 유사한 프로젝트였지만, 특별히 사용하기 쉬운 것은 아니었다.[2]
코스모3D
Inventor와 Performer 팀은 개발 용이성과 고성능을 모두 제공하면서 두 시스템을 하나로 결합할 수 없는 특별한 이유가 없음을 이미 깨달았다.이는 Cosmo3D 시스템, 기본적으로 OpenGL의 상단에 있는 표준화된 고성능 장면 그래프로 이어졌다.코스모3D는 전체 장면과 이를 재구성하는 데 필요한 모든 데이터를 저장할 수 있는 새로운 파일 형식인 VRML 형식을 도입했다.[2]
SGI는 코스모3D를 사용한 제품을 다수 생산했다.그 중에는 다양한 VRML 툴과 OpenGL Optimizer라는 CAD 용도의 대형 모델 시각화 시스템이 있었다.이상하게도 VRML 저작 도구인 코스모 코드는 다른 부서에서 제작했으며 코스모 장면 그래프를 전혀 사용하지 않았다.
코스모의 장면 그래프는 당시로서는 결코 독특한 해결책이 아니었고, 많은 다른 그래픽 회사들도 이 무렵 비슷한 생각을 하고 있었다.
오픈GL++
1996년 8월 20-21일의 OpenGL 아키텍처 검토 위원회(ARB) 회의에서 SGI는 Cosmo3D와 유사하지만 "표준" OpenGL을 기반으로 한다는 분명한 의도를 가지고 새로운 표준화된 장면 그래프의 아이디어를 발표했다.그 개념에 어느 정도 관심이 있었기 때문에 1996년 12월 9~10일 회의에서 그 그룹은 OpenGL++ 개념의 초안을 제시했다.[2]1997년 2월 17~19일 후속 회의에서 ARB가 OpenGL 지원이라는 주요 업무를 희석하지 않고 그러한 노력을 지원할 수 있는 적임자인지 여부에 대한 우려는 있었지만 마이크로소프트와 쑨을 제외한 대부분의 당사자들로부터 상당한 관심이 있다는 것을 보여주었다.[3]개발은 API의 몇 가지 배포를 포함하여 1997년 내내 계속되었다.하지만, ARB는 "일이 많았지만, 상대적으로 의사소통이 적다"[4]고 기록하고 있다.
OpenGL++에 대한 작업이 계속되는 동안, Sun과 SGI도 자바에 적합한 3D 표준을 개발해왔다.이러한 노력은 결국 결렬되었고, 선은 계속해서 자바3D를 출시했다.SGI는 Cosmo 작업이 Java3D의 샘플 구현이라고 제안했고, 이 작업이 OpenGL++로 진화하면서 이 계획들이 함께 움직였다.OpenGL++의 정의에서 Sun은 Java3D 작업에 집중했기 때문에 이러한 노력에 관심이 없다고 말했다.[2]상대적으로, Java3D는 장면 그래프와 시각적 인터페이스와 그 위젯의 두 개의 3D 스택 계층에 걸쳐 있다.
1997년 말 SGI는 OGL++ 노력에 완전히 전념하는 것처럼 보였다.이들은 기존 코스모 작업이 폐기되고 OGL++ 위에 Open Inventor, Performer, OpenGL Optimizer가 다시 작성될 것이라고 밝힌 바 있다.OGL++는 Cosmo3D의 정리되고 보다 유연한 버전을 의도했기 때문에, 대부분의 Cosmo3D 팀은 OGL++에 대한 작업을 시작했으며, 많은 노력이 진정으로 강력하면서도 일반적인 장면 그래프의 약속을 전달할 수 있는 사양과 구현을 목표로 하고 있었다.[5][6]
마지막에
1998년 3월 ARB 회의에서, 모두가 놀랍게도, SGI는 완전히 새로운 프로젝트인 Fahrenheit를 선보였다.회의록의 ARB 노트는 "SGI는 호환되는 방향으로 움직이지 않던 마이크로소프트와 협력하여 윈도우 환경에서 부가가치가 높은 제품을 구축하는 것이 중요하다고 생각했다.화씨란 그런 방향으로의 큰 발걸음이다."[2]OpenGL++는 버려졌다.
이 프로젝트는 SGI가 대기업과의 파트너십을 위해 방향을 바꾸는 등 이 시기를 거치면서 우선순위를 바꾼 데 따른 피해로 보인다.이들 기업이 다른 제품 틈새에 집중하기 위해 3D 공간을 빠져나갔을 때 SGI는 프로젝트의 유일한 후원자, 즉 그들이 피하고자 했던 바로 그 지원자로 남게 되었다.결국 3D 포커스를 맞춘 다른 회사는 마이크로소프트뿐이었고, 파렌헤이트 프로젝트는 오픈GL++ 노력 직후에 시작되어 끝이 났다.
오늘날, 그러한 표준화된 장면 그래프는 존재하지 않으며, SGI는 API 세계를 거의 벗어나고 있다.SGI는 이전의 Open Inventor 코드를 오픈 소스로 공개했지만 OGL++에 대한 소스는 결코 만족할 만한 수준으로 완성되지 않았다.최종 사양은 존재하지 않으며, OpenGL과 마찬가지로, 그러한 오픈 플랫폼 뒤의 사양과 아이디어는 장면 그래프 아이디어의 단 한 번의 구현이 아니라 그것의 지속적 가치를 제공하는 것이었을 것이다.
참조
추가 읽기
- OpenGL++ 사양
- OpenGL++(OpenGLPlus) 가능한 계층(Wayback 스냅샷)