OpenSceneGraph
OpenSceneGraph![]() | |
안정적 해제 | 3.6.5 / 2020년 1월 31일;[1] 전 |
---|---|
리포지토리 | |
기록 위치 | C++ |
운영 체제 | 크로스 플랫폼 |
유형 | 3D 그래픽스 |
면허증 | OpenSceneGraph 공용 라이센스(LGPL 기반) |
웹사이트 | www www |
OpenSceneGraph는 시각 시뮬레이션, 컴퓨터 게임, 가상현실, 과학적 시각화, 모델링 등의 분야에서 애플리케이션 개발자들이 사용하는 오픈소스 3D 그래픽 애플리케이션 프로그래밍 인터페이스(도서관 또는 프레임워크)이다.[2]
툴킷은 OpenGL을 사용하여 표준 C++로 작성되며 마이크로소프트 윈도, 맥OS, 리눅스, IRIX, Solaris, FreeBSD 등 다양한 운영 체제에서 실행된다.[2]3.0.0 버전 이후 오픈씬그래프는 모바일 플랫폼, 즉 iOS, 안드로이드 애플리케이션 개발도 지원한다.
2021년 현재, 이 프로젝트는 벌칸 기반 도서관인 벌칸스크네그래프 프로젝트에 의해 계승되고 있다.[3]OpenSceneGraph는 2019년부터 정비 단계에 있다.
역사
OpenSceneGraph 프로젝트는 1998년 돈 번즈에 의해 시작되었다.로버트 오스필드는 1999년 마이크로소프트 윈도용 완제품 포팅 작업을 하면서 이 프로젝트에 참여했다.이 프로젝트는 1999년 9월에 오픈 소스가 되었고 공식 프로젝트 웹사이트가 만들어졌다.연말에 오스필드가 프로젝트를 인수하여 기존 코드베이스에 대한 대대적인 리팩터링을 시작하여 현대화에 중점을 두고 현대 C++ 표준과 디자인 패턴을 채택했다.
2001년 4월, 커가는 이용자 커뮤니티와 대중의 관심을 고려하여 로버트 오스필드는 OpenSceneGraph Professional Services를 설립하여 상업적 지원, 컨설팅, 교육 서비스를 제공하였다.이로써 그 프로젝트는 전문화되었다.
OpenSceneGraph의 첫 번째 공식 안정 버전은 2005년에 출시된 버전 1.0이었다.확장 버전 2.0은 2007년에 이어 멀티 코어 및 멀티 gpu 시스템, 몇 가지 중요한 NodeKit 및 통합 멀티플랫폼 빌드 시스템 CMake의 사용을 추가했다.책과 사용자 핸드북이 소개되었다.[4]
그 프로젝트는 빠르게 성장하고 있고 그 이후로 더욱 인기를 끌고 있다.현재 안정된 버전으로 서명한 기고자는 530여 명이며, 공식 메일링 리스트에는 수천 명의 이름이 적혀 있다.[5]
2019년, 이 프로젝트는 유지 보수 단계로 옮겨졌고, 주요 개발 노력은 후임 프로젝트인 벌칸스크네그래프로 연결되었다.[6]
특징들
버전 1.0의 기능:[7]
- 기능이 풍부하고 널리 채택된 장면 그래프 구현
- 성능 향상 기능 지원
- 최신 확장을 포함하여 1.1에서 2.0까지 OpenGL 지원
- 3Dlabs와 함께 개발된 OpenGL Shading Language에 대한 긴밀하게 결합된 지원
- OpenFlight, TerraPage, OBJ, 3DS, JPEG, PNG 및 GeoTIFF와 같은 형식에 로더를 사용할 수 있는 광범위한 2D 이미지 및 3D 데이터베이스 형식 지원
- 입자 효과
- 안티앨리어싱 TrueType 텍스트 지원
- 프레임 버퍼 객체, 퍼퍼 및 프레임 버퍼 렌더-테렌즈 효과에 대한 원활한 지원
- 모든 3D 데이터베이스 및 이미지 로더와 함께 사용할 수 있는 다중 스레드 데이터베이스 페이징 지원
- 대규모의 전체 지구 공간 지형 페이징 데이터베이스 생성
- 외부 애플리케이션이 일반 인터페이스를 통해 씬(scene) 그래프의 모든 클래스에 대해 쿼리, 가져오기, 설정 및 작동할 수 있는 핵심 라이브러리에 대한 자기성찰 지원
- 다중 CPU/다중 GPU 시스템을 위한 다중 스레드 및 구성 지원
버전 2.8.3의[8] 특징
- Mac OS X 10.6(Snow Leopard) 지원
- Mac OS X의 ImageIO 지원
- 3DS 파일 형식 내보내기 및 파일 변환
- 통합 Autodesk FBX 기술
- 3D 응용 프로그램에서 비디오 파일 콘텐츠를 표시하기 위한 FFmpeg 통합 지원
- PLY 파일 형식 지원
버전 2.8.4의 특징:[9]
- VS2010 빌드 지원
버전 3.0.0의 기능:[10]
- OpenGL ES 1.1 및 OpenGL ES 2.0 지원
- OpenGL 3.x 및 4.x 지원 및 관련 OpenGL 확장
- 태블릿 및 전화기에서 Android 지원
- 태블릿 및 전화기의 IOS 지원(앱 스토어에서 최종 사용자 애플리케이션이 이미 수락됨)
- 몰입형 3D 프레젠테이션을 위한 Present3D 애플리케이션 소개
- 새로운 .osgb 바이너리, .osgt; asci 및 .osgx xml 파일 기본 형식을 제공하는 새 확장 가능한 직렬 장치
- 직렬화할 수 있는 새로운 일반화된 메타데이터 아키텍처
- 통합을 바로 앞당기는 새로운 osgQt 라이브러리!QWebKit를 통한 웹 브라우징을 포함한 OpenSceneGraph with Qt.
- Audodesk FBX DSK 기반의 새로운 FBX 플러그인으로, .fbx 3D 저작 및 교환 형식을 읽을 수 있음
- Windows에서 동영상을 처리하기 위한 새로운 Directshow 플러그인
- 장면을 POV-Ray 형식으로 내보내기 위한 새로운 pov 플러그인 - POV-Ray를 사용하여 포토 리얼리티 레이 추적을 수행할 수 있음
- 플라이 파일을 읽기 위한 새 플라이 플러그인
- .3ds 파일의 읽기 및 쓰기를 위한 3ds 플러그인 개선
- .dxf 파일을 읽고 쓸 수 있도록 수정된 dxf 플러그인
- 코코아 및 64비트 OSX 빌드 지원
안정적 버전 릴리스 기록
버전 | 릴리스 날짜 |
---|---|
3.0 | 2013년[11] 2월 5일 |
3.2 | 2013년[12] 7월 24일 |
3.4 | 2015년[13] 7월 20일 |
3.4.1 | 2017년[14] 8월 28일 |
3.6 | 2018년[15] 4월 7일 |
3.6.1 | 2018년 5월 28일 |
3.6.2 | 2018년 6월 29일 |
3.6.3 | 2018년 9월 14일 |
3.6.4 | 2019년 7월 26일 |
3.6.5 | 2020년 1월 31일 |
건축
라이브러리 아키텍처는 핵심 OpenSceneGraph 라이브러리, osgViewer 및 노드키트 집합의 세 가지 주요 하위 집합으로 분리될 수 있다.
코어
OpenSceneGraph 라이브러리의 저변은 4개의 주요 모듈로 더욱 나눌 수 있다.
오스그
OpenSceneGraph의 코어는 장면 그래프의 구성과 조작을 위한 클래스 및 방법을 제공한다.다양한 종류의 노드, 장면 기하학, OpenGL 상태 추상화, 기하학적 변환을 대표하는 클래스와 2D 및 3D 벡터 및 매트릭스 연산을 위한 수학 클래스가 수록되어 있다.고급 메모리 관리도 포함된다.
오픈스레드
OpenSceneGraph 프로젝트에는 경량 크로스 플랫폼 스레드 모델인 스레드 라이브러리인 OpenThreads가 포함되어 있다.C++ 프로그래머를 위한 최소의 완전한 OU(Object-Oriented) 스레드 인터페이스를 제공하기 위한 것이다.자바 스레드 API, POSIX 스레드 표준을 느슨하게 모델로 하고 있다.
OpenThreads의 아키텍처는 공유 객체 라이브러리에서 컴파일 시간에 정의되는 "스왑 가능" 스레드 모델을 중심으로 설계된다.공장 패턴 설계를 사용하여 일반 인터페이스의 목표를 달성할 수 있었지만, 프로그래머가 4가지 기본 유형(스프레드, 뮤텍스, 배리어 & 컨디션)을 각각 힙에 할당해야 했을 것이라는 점은 중요하다.일부 플랫폼에서 이러한 구조의 기초적인 콘크리트 구현의 힙 할당과 관련된 비용 때문에, 이러한 할당은 이 라이브러리가 처음 작성되었을 때 허용되지 않는 것으로 간주되었고, 따라서 공장 패턴은 사용되지 않았다.
대신에, 필요한 데이터/이행 숨기기 위해 다소 난해하지만 효과적인 기술을 선택했다.이 기술은 개체 개인 데이터를 캡슐화하기 위해 개인 보이드 포인터를 사용한다.보이드 포인터는 실제로 콘크리트 데이터 구조를 가리키지만 dso에 균일한 인터페이스를 제공한다.
OpenThreads의 설계 목표는 IRIX, Windows 스레드에 사용되는 sproc 메소드와 같이 플랫폼에 최적화된 다중 처리 구조를 사용하여 최적화된 구현을 구축하는 것이다.
osgUtil
osgUtil에는 렌더링 백엔드 기능과 씬(scene) 그래프 통과를 관리하는 유틸리티가 포함되어 있어 최적화를 렌더링하고 씬(scene)을 OpenGL API 호출의 스트림으로 변환한다.그것은 또한 물체 선택과 같은 장면과의 기본적인 상호작용 수단도 제공한다.
osgDB
이 라이브러리는 3D 모델 파일을 로드하는 작업이다.그것은 많은 2D/3D 데이터 포맷 조작기를 지원한다.50개 이상의 다른 형식이 지원됨 - 가장 일반적인 형식은 COLADA(.dae), LightWave(.lwo), Wavefront(.obj), OpenFlight(.flt), 3D Studio Max(.3ds), DirectX(.x) 등과 같은 3D 데이터 형식이다.OpenSceneGraph는 또한 고유의 ASCII .osg 포맷을 제공한다.Blender, Maya, 3D Studio MAX에는 .osg 형식의 내보내기 기능이 있다.
지원되는 그림 형식은 .rgb, .gif, .jpg, .png, .tif, .tif, .tif, .pif, .pic, .bmp, .dds, .tga, 퀵타임 등이다.
이 모듈은 I/O 기기 추상화 기능도 제공한다.다른 파일 형식 로더 플러그인은 osgDB에 등록되어 있다.
오스가
다른 플랫폼에 필요한 GUI 추상화 라이브러리 입니다.
osgViewer
osgViewer Library는 그래픽 장면을 빠르고 쉽게 시각화할 수 있는 방법을 제공한다.그것은 또한 다양한 윈도우 시스템 인터페이스에 대한 플랫폼 독립적 추상화다.
osg프로듀서
OSG는 또한 여러 그래픽 컨텍스트와 멀티스레딩을 지원하는 플랫폼 독립 뷰어에 불과한 osg프로듀서와 함께 배송된다.[16][17]
노드키츠
프로젝트 배포에는 이른바 노드키트(NodeKit)도 다양하게 포함되어 있다.이것들은 일반적인 문제들의 해결책이며, 더 발전된 3D 응용 컴포넌트와 그래픽 알고리즘을 자주 사용한다.가장 중요한 것 중한 것은
- osgAnimation — 골격 모델 사용, 애니메이션 및 모핑.
- osgFx — 특수 효과 및 영상 후 처리.
- osgManipulator - 대화형 3D 장면 조작.
- osgParticle — 고급 입자 시스템 사용.
- osgQt — Qt 툴킷과의 통합 및 QtGUI 요소를 OSG 애플리케이션에 통합.
- osgShadow — 섀도 렌더링 기술을 위한 프레임워크.
- osgTerrain — 광범위한 지형 렌더링.
- osgText — 품질 안티앨리어스 글꼴, TrueType 및 FreeType 글꼴 지원.
- osgVolume - 볼륨 렌더링 및 볼륨 측정 데이터 조작.
- osgWidget — 간단한 GUI 생성.
접수 및 채택
OpenSceneGraph는 더 높은 "게이밍" 로직을 위한 어떤 기능도 제공하지 않으며 렌더링 전용 툴이다.OSG를 그래픽 렌더링의 기반으로 삼아 컴퓨터 게임(또는 소위 심각한 게임)을 만들기 위한 풀스케일 엔진이 몇 개 있는데, 가장 일반적인 프레임워크는 델타3D이다.
OpenSceneGraph 위에 매우 다양한 소프트웨어 제품이 구축되어 있으며, 그 중에서도 Virtual Teameter Project와 ViewTec TeameterView가 있다.OSG 사용자 목록에는 보잉, NASA, FlightGear, Norcontrol 등의 회사가 포함되어 있다.[18][19][20][21][22]
오픈소스 커뮤니티 수준에서 여러 프로젝트가 OSG를 렌더링 백엔드로 채택했다.
- FlightGear (Flight Simulation 소프트웨어)
- OpenMW(Morrowind용 Opensource 엔진)
OpenSceneGraph는 OSG라는 javascript/WebGL 구현을 받았다.스케치팹, Clara.io 등 온라인 3D 장면 시청자들이 많이 이용하는 JS.
C++에서 Emscripten OGStudio를 통해 javascript에 이르는 랩핑도 현재 개발 중이다.
OSG를 사용하는 다른 제품들 중에서 반드시 다음을 언급해야 한다.
참고 항목
참조
- ^ "Stable releases".
- ^ a b Anne Ruas, Christopher Gold (2008). Headway in Spatial Data Handling:13th International Symposium on Spatial Data Handling. Springer. p. 370. ISBN 9783540685661.
{{cite book}}
: CS1 maint: 작성자 매개변수 사용(링크) - ^ "VulkanSceneGraph Project". www.openscenegraph.org. Retrieved 2021-07-05.
- ^ 마츠, P.:OpenSceneGraph 빠른 시작 안내서.2007년 미국 루이빌.
- ^ http://www.openscenegraph.org/projects/osg/wiki/Support/History
- ^ "VulkanSceneGraph Project".
- ^ "Archived copy". Archived from the original on 2011-06-09. Retrieved 2010-02-20.
{{cite web}}
: CS1 maint: 타이틀로 보관된 사본(링크) - ^ "OpenSceneGraph Adds New Features to 3D Graphics Applications". April 5, 2010. Archived from the original on April 15, 2010.
- ^ http://www.openscenegraph.org/svn/osg/OpenSceneGraph/tags/OpenSceneGraph-2.8.4/NEWS.txt[데드링크]
- ^ http://www.openscenegraph.org/svn/osg/OpenSceneGraph/tags/OpenSceneGraph-3.0.0/NEWS.txt[데드링크]
- ^ Torres, Jordi. "OpenSceneGraph 3.0 release". www.openscenegraph.org. Retrieved 2017-09-23.
- ^ "OpenSceneGraph 3.2 release". www.openscenegraph.org. Retrieved 2017-09-23.
- ^ "OpenSceneGraph-3.4 release". www.openscenegraph.org. Retrieved 2017-09-23.
- ^ "OpenSceneGraph-3.4.1 release". www.openscenegraph.org. Retrieved 2017-09-23.
- ^ "OpenSceneGraph-3.6 release". www.openscenegraph.org. Retrieved 2018-08-14.
- ^ Aylett, Ruth. "Introduction to Open Scene Graph" (PDF). Heriot Watt University.
{{cite web}}
: CS1 maint : url-status (링크) - ^ "Introduction to the OpenSceneGraph". openscenegraph.sourceforge.net. Retrieved 2021-07-05.
- ^ "Use cases".
- ^ http://www.openscenegraph.org/projects/osg/wiki/Screenshots
- ^ http://vterrain.org/
- ^ "ViewTec Inc. - Products". www.viewtec.net. Archived from the original on 2009-02-28.
- ^ http://www.delta3d.org
외부 링크
- www.openscenegraph.org
- 프로젝트 공식 웹사이트 - AlphaPixel OSG 이진 - Windows, Mac 및 Linux x86 및 x64 사전 컴파일된 이진 파일.
- SigmaOSG - OpenSceneGraph 자습서(퇴역된 OSGHelp 사이트의 모든 이전 OSGHelp 자료 포함)
- 3D 소프트웨어 개발을 위한 Scenegraphs 및 Opencenegraph
- OpenSceneGraph - www.OpenGL.org의 라이브러리 정보 웹 페이지(4개의 승격 라이브러리 중 하나)