보고 내용
[김영광] [오전 10:00] [디지털콘텐츠사업_디콘사업_STAF(OBJ변환) 프로젝트 display 없이 동작이 불가능한 이슈 해결 건]
안녕하십니까?
한국전자기술연구원 김영광입니다.
어제 밤에 말씀 드렸던 문제인 모니터 없는 환경(원격 접속 등)에서
STAF 프로젝트가 동작이 안되는 문제 해결 후 연락 올립니다.
조치는 flask 서버 코드 상단에 import 부분쪽에 아래 코드를 작성 하였습니다.
os.environ['PYOPENGL_PLATFORM'] = 'egl'
[김영광] [오전 10:03] PYOPENGL_PLATFORM 환경 변수를 세팅 하였고요
- `pyrender`의 `OffscreenRenderer` 클래스는 기본적으로 `pyglet`을 사용하여 오프스크린 렌더링을 수행한다는 점을 확인 했고 이에 대해서 문제가 발생한 것으로 확인 했습니다.
- GUI가 없는 환경에서는 `pyglet` 대신 `egl` 또는 `osmesa`와 같은 다른 렌더링 플랫폼을 사용하라고 메뉴얼에 있었습니다.
https://pyrender.readthedocs.io/en/latest/examples/offscreen.html
- egl은 gpu를 osmesa는 cpu를 사용한다는 차이가 있어서 egl를 선택하였습니다.
[김영광] [오전 10:04] 금주내로 질풍 PC에 세팅하고 요청하신 필드 이름 말씀 드리겠습니다.
JavaScript
복사
EGL과 OSMESA의 차이
os.environ["PYOPENGL_PLATFORM"] = "egl"
•
EGL 정의
◦
OpenGL, OpenGL ES, OpenVG와 같은 그래픽 API와 윈도우 시스템 간의 인터페이스를 정의하는 표준 API
◦
하드웨어 가속을 지원하며, 주로 모바일 장치, 임베디드 시스템에서 사용
◦
GUI가 없는 시스템에서도 GPU 가속을 활용한 효율적인 그래픽 렌더링 가능
•
사용 사례
◦
서버 환경에서의 3D 렌더링: 클라우드나 원격 서버에서 하드웨어 가속을 통한 고성능 그래픽 처리 필요 시 사용
◦
모바일 애플리케이션 개발 및 테스트: 모바일 GPU와 유사한 환경 구축 시 사용
◦
임베디드 시스템: 제한된 자원에서 고성능 렌더링 필요 시 사용
os.environ["PYOPENGL_PLATFORM"] = "osmesa"
•
OSMesa 정의
◦
Mesa 3D 그래픽 라이브러리의 소프트웨어 렌더링 백엔드
◦
GPU 없이 CPU에서 오프스크린 렌더링 수행
◦
물리적 디스플레이가 필요 없는 환경에서 사용
•
사용 사례
◦
GPU가 없는 환경: 서버에 GPU가 없거나 GPU 가속이 필요 없는 경우 사용
◦
디버깅 및 테스트: GPU 없는 환경에서 간단한 테스트나 디버깅 목적 사용
◦
소프트웨어 렌더링: CPU 기반 렌더링이 충분한 경우, 작은 규모의 그래픽 작업이나 연구 목적 사용
차이점 요약
•
EGL: GPU를 통한 하드웨어 가속, 고성능 그래픽 렌더링 가능, 주로 모바일/임베디드/서버 환경에서 사용
•
OSMesa: CPU 기반 소프트웨어 렌더링, GPU 없는 환경에서 사용, 단순 테스트 및 디버깅에 적합
자주 사용 여부
•
EGL: GPU가 있는 환경에서 주로 사용, 고성능 작업에 적합
•
OSMesa: GPU 없는 환경에서 사용, 소규모 작업이나 테스트에 적합
안녕하세요
•
한국전자기술연구원 김영광입니다.
•
관련 기술 문의와 R&D 공동 연구 사업 관련 문의는 “glory@keti.re.kr”로 연락 부탁드립니다.
Hello 
•
I'm Yeonggwang Kim from the Korea Electronics Research Institute.
•
For technical and business inquiries, please contact me at “glory@keti.re.kr”