2017-06-06 9 views
1

カメラ固有の& &の外部パラメータを指定すると、対応するシルエット画像にobj(人体モデル)をレンダリングしようとしています。どのレンダラーがそのタスクに適しているか知りたいのですが。効率性が私の最大の関心事なので、レンダリングされた画像のリアルタイム表示は望ましくありません。私は100000個の3Dオブジェクトを持っているので、それらのオブジェクトのシルエットイメージを一度にレンダリングするスクリプトを書く必要があります。ここ3Dオブジェクトをシルエット画像にレンダリングする方法は?

+0

([ModernGL]試しあなたはhttps://moderngl.readthedocs.io/en/stable/)あなたイメージに直接レンダリングすることができます。 –

+0

[ヘッドレスレンダリングの例](https://github.com/cprogrammer1994/Headless-rendering-with-python)です。 –

答えて

1

ModernGLを使用して画像のOpenGLでレンダリング小さい例であり、Pillow

サンプルコード:

import struct 

import ModernGL 
from PIL import Image 

ctx = ModernGL.create_standalone_context() 

prog = ctx.program([ 
    ctx.vertex_shader(''' 
     #version 330 
     in vec2 vert; 
     void main() { 
      gl_Position = vec4(vert, 0.0, 1.0); 
     } 
    '''), 
    ctx.fragment_shader(''' 
     #version 330 
     out vec4 color; 
     void main() { 
      color = vec4(0.3, 0.5, 1.0, 1.0); 
     } 
    '''), 
]) 

vbo = ctx.buffer(struct.pack('6f', 0.0, 0.8, -0.6, -0.8, 0.6, -0.8)) 
vao = ctx.simple_vertex_array(prog, vbo, ['vert']) 

fbo = ctx.framebuffer(ctx.renderbuffer((512, 512))) 

fbo.use() 
ctx.viewport = (0, 0, 512, 512) 
ctx.clear(0.9, 0.9, 0.9) 
vao.render() 

pixels = fbo.read(components=3, alignment=1) 
img = Image.frombytes('RGB', fbo.size, pixels).transpose(Image.FLIP_TOP_BOTTOM) 
img.show() 
+0

3D(perspective and lookat matrices)(https://github.com/cprogrammer1994/ModernGL/blob/master/examples/GLWindow/05_perspective_projection.py#L25)を使った例です。私は、シェーダでハードコーディングするのではなく、マトリックス操作のためにある種のGLMを使用することを推奨します。 –

+0

ありがとう!私は自分の仕事のためにModernGLを調べます。 –

+0

ModernGLでEBOをサポートしていますか?あなたが提供した文書でEBOの使い方を見つけることができません。 –

関連する問題