Blender 3D 2.8x 그래픽 사용자 인터페이스는 어떻게 만들어 집니까?

모든 프로세스, 기능, 관련 언어, 코드 예제 및 URL을 알고 싶습니다. 가능한 경우 업데이트 된 정보가있는 공식 사이트.

참고 : 저는 프로그래머가 아닙니다. 방법과 방법을 알고 싶습니다. 학습을 시작해야합니다.

9 년 전 사용자가 응답했습니다 :

최저 레벨에서 블렌더 2.5 시리즈에 대해 이야기한다고 가정하면 블렌더의 UI는 OpenGL을 사용하여 구현됩니다 (주로 C). Python 레이어에 연결되어 있습니다 . 이는 수정하기가 매우 쉽다는 것을 의미합니다. 성능 저하없이 Python을 사용하는 Blender의 UI.

그리고 의 이력서에 따르면 GUI 개발 및 portab에 대한 더 나은 응답 ility , 그러나 업데이트되지 않음 (4 년) :

아니요. Blender 이외의 다른 프로그램에서는 Blender의 GUI 패키지를 사용할 수 없습니다. Blender 그래픽 사용자 인터페이스 패키지는 다양한 플랫폼에서 Blender와 함께 사용하도록 설계되었습니다. Blender에는 사용자 지정 창이 있습니다. 그리고 Blender의 UI 위젯은 Blender의 데이터 API (RNA / ID 속성)와 밀접하게 결합되어 있습니다.

Blender 외부에서 사용할 수있는 GHOST (General Handy Operating System Toolkit)가 있지만 매우 낮은 수준이며 X11 / MS-Windows에서 창 액세스, 마우스, 키보드, ndof 및 태블릿 이벤트 만 제공합니다. / OS X. 실제로는 아무것도 그리지 않습니다. 예를 들어 버튼이나 텍스트는 Blender의 자체 코드로 처리됩니다.

1 년 전 ,하지만 필요만큼 상세하지는 않습니다.

Blender의 전체 사용자 인터페이스는 OpenGL을 통해 화면에 그려집니다. 대부분의 UI는 C로 정의되고 대부분의 레이아웃과 같은 일부 부분은 Python으로 정의됩니다.

그래서 :

  1. 알고 있습니다. 블렌더는 바이너리를 통해 블렌더 소프트웨어를 지원하지 않는 PC에서 장면을 렌더링 할 수 있습니다. CLI (명령 줄 인터페이스) 명령을 허용합니다. 오래 전에 2.79를 실행할 수 없었지만 2.76을 실행할 수 없었습니다. 그러나 trough SheepIt Render Farm 은 CPU 문제없이 다른 2.79 파일을 렌더링 할 수 있으며 그 반대도 마찬가지입니다.
    • 이 CLI 지원은 Blender GUI를 독립적으로 만들거나 (즉, GUI가 변경 될 때마다 CLI를 호출 함을 의미 함) GUI를 거의 핵심에 가깝게 만듭니다 (블렌더 코어 코드가 GUI 코드의 변경과 관련됨을 의미 함). ?
  2. [favorite-examples] 언어를 사용하는 다른 응용 프로그램에 Blender 그래픽 사용자 인터페이스 (또는 그 일부)를 효과적으로 구현할 수 있습니까?

이유

잉크 스케이프 개발에 깊이 참여하고 싶고 실제 주요 이슈 (사용자 용)가 완전하지 않기 때문에 구체적인 답변을 구합니다. GUI를 개발하고 CMYK를 지원하지 않습니다. 반면에 Blender는 실제로 매우 산업화되어 있습니다 (즉, 비즈니스에 대한 사용은 완전히 PRO입니다.)

Inkscape 개발자는 모든 코드베이스를 포팅하고 있습니다. C)에서 C ++로, CSS 파일을 사용하여 개발할 수 있도록 사용자 인터페이스를 별도의 구현으로 분할하고 싶습니다. 그 과정에서 블렌더 코드베이스에 접근하는 것이 가능합니다.

댓글

  • CLI는 사용자 인터페이스이기도합니다. 예쁜 그래픽이 아닌 명령 줄 만 사용합니다. CLI와 GUI 모두 실제로 작업을 수행하는 " 백엔드 "와 통신합니다. Blender는 OpenSource (및 GPL 라이센스)이기 때문에 다른 언어로 새 GUI를 만드는 데 문제가 없어야하지만 대부분 언어에 따라 다릅니다. 언어는 어떻게 든 백엔드와 통신해야합니다. 대부분의 언어에는 일반적으로 " 바이너리를 " 라이브러리로 사용할 수 있도록 래핑하는 방법이 있지만 이는 언어별로 다릅니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다