Google Colaboratory가 3D CG 렌더링 애플리케이션에도 너무 유능한 경우
이론보다 증거. 다음은 Colaboratory의 Blender에서 렌더링한 1920*1080의 출력 결과입니다(참고: 모델은 Blender 공식 사이트에 게시되며 CC0 라이센스를 준수합니다)
이 1장의 렌더링에 필요한 시간은 28초. 실제 Jupyter 샘플은 여기에서 공개하고 있습니다.이므로 지금 시도해 볼 수 있습니다.
샘플에도 있지만, Colaboratory에서 blender를 설치하는 것은 다음 명령입니다. apt 명령 한 번으로 갈 수있는 것이 훌륭합니다.
!apt install blender libboost-all-dev libgl1-mesa-dev
그리고 블렌더의 백그라운드 모드를 사용하는 실행 스크립트는 다음과 같습니다. E 옵션으로 렌더러를 지정하고 있으며 여기를 "CYCLES"로 설정하면 Path Tracing으로 전환됩니다.
!blender -b BMW27GE.blend -noaudio -o ./test_ -E BLENDER_RENDER-x 1 -f 1
Blender 자체는 Python 코드로 자동 제어할 수 있습니다만, 불행히도 그 제어 모듈인 blenderpy 가 Colab에 인스톨 할 수 없었습니다. 설치에 사용한 명령은 다음과 같습니다.
!pip install bpy
자주 README를 읽으면, Windows만의 대응이라고.
I have not tested this for platforms other than Windows at the moment. More to come soon.
만약 blenderpy가 제대로 인스톨 되면, GPU 렌더링의 검증등이 가능한 만큼 유감입니다. 만약 대체안을 아시는 분이 있으면, 교수 받을 수 있으면 기쁩니다.
또한 Colab에서는 OpenGL ES에 의한 GPU 렌더링도 실은 가능합니다. Pyrender을 설치하면 Python에서만 모델 로드에서 드로잉까지 작성할 수 있습니다.
!pip install pyrender
glb(glTF의 바이너리 포맷) 형식의 파일을 읽어들여, Pyrender 로 표시한다 Jupyter 샘플 공개 . 샘플 코드를 아래에 발췌해 둡니다. 이곳은 GPU에만 순간적으로 그려져 있습니다.
# Render offscreen -- make sure to set the PyOpenGL platform
import os
os.environ["PYOPENGL_PLATFORM"] = "egl"
import numpy as np
import trimesh
import pyrender
# Load the FUZE bottle trimesh and put it in a scene
tri_scene = trimesh.load('pyrender/examples/models/WaterBottle.glb')
scene = pyrender.Scene.from_trimesh_scene(tri_scene)
# Set up the camera -- z-axis away from the scene, x-axis right, y-axis up
camera = pyrender.PerspectiveCamera(yfov=np.pi / 6.0)
s = np.sqrt(2)/2
camera_pose = np.array([
[0.0, -s, s, 0.3],
[1.0, 0.0, 0.0, 0.0],
[0.0, s, s, 0.35],
[0.0, 0.0, 0.0, 1.0],
])
scene.add(camera, pose=camera_pose)
# Set up the light -- a single spot light in the same spot as the camera
light = pyrender.SpotLight(color=np.ones(3), intensity=3.0,
innerConeAngle=np.pi/16.0)
scene.add(light, pose=camera_pose)
# Render the scene
r = pyrender.OffscreenRenderer(640*2, 480*2)
color, depth = r.render(scene)
# Show the images
import matplotlib.pyplot as plt
plt.figure(figsize=(16, 12))
plt.axis('off')
plt.imshow(color)
공동체, 설마 블렌더가 정상적으로 움직일 것이라고 생각하지 않았기 때문에 놀랍습니다. 그 밖에도 여러가지 가능성이 있을 것 같네요.
Reference
이 문제에 관하여(Google Colaboratory가 3D CG 렌더링 애플리케이션에도 너무 유능한 경우), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/stakemura/items/71aeefaa927ab277fcf1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)