我試圖渲染一個obj(人體模型)到其相應的輪廓圖像給定相機內在& &外在參數,我想知道哪個渲染器適合該任務。我不想實時顯示渲染圖像,因爲效率是我最關心的問題。我有100000個3D對象,我需要編寫一個腳本來一次渲染這些對象的輪廓圖像。如何渲染3D對象以在python中剪影圖像?
回答
下面是使用ModernGL和Pillow一個小例子與OpenGL渲染的圖像
樣品的編號:
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()
這是一個使用3D [透視和查看矩陣]的例子(https://github.com/cprogrammer1994/ModernGL/blob/master/examples/GLWindow/05_perspective_projection.py#L25)。我建議使用某種GLM進行矩陣處理,而不是在着色器中對其進行硬編碼。 –
謝謝!我將研究ModernGL來完成我的任務。 –
正在使用ModernGL支持的EBO嗎?我無法在您提供的文檔中找到EBO的用法。 –
- 1. Hadoop和3d渲染圖像
- 2. 將3d對象渲染到Cameraview中
- 3. 在OpenCV攝像機上渲染3D對象
- 4. 圖像識別和3d渲染
- 5. 使用jquery渲染圖像(流對象)
- 6. 計算視圖中3D對象的渲染大小
- 7. 如何在React中渲染對象?
- 8. JsRender如何渲染對象
- 9. 如何在rails3中渲染圖像select
- 10. 如何在asp.net mvc中渲染圖像?
- 11. 如何在OpenGL中剪裁渲染(C++)
- 12. 隱藏影片剪輯,渲染性能
- 13. 3D渲染庫
- 14. 在Libgdx中渲染圖像
- 15. 我如何渲染圖像的3D場景?
- 16. 如何在某些座標中渲染靜態3d對象統一
- 17. 如何在directshow源過濾器中渲染3d圖形
- 18. 如何在java/C++中渲染3D場景的高質量圖像
- 19. 3D渲染工具
- 20. 渲染軌對象
- 21. 使用min3D在Android上渲染導出的3D對象
- 22. 使用Blender和Python進行3D渲染
- 23. Python中10,000+點3D散點圖(帶快速渲染)
- 24. Android-圖像渲染
- 25. 在後臺渲染圖像
- 26. 渲染處理中的近多邊形對象的剪輯
- 27. 從深度圖表面渲染的3d渲染
- 28. 將DirectX 3D圖形直接渲染到圖像上,使用C#
- 29. SharpDX如何渲染3D環境
- 30. 如何提高LibGDX 3D渲染性能?
嘗試[ModernGL]( https://moderngl.readthedocs.io/en/stable/)你可以直接渲染圖像。 –
這是[無頭渲染示例](https://github.com/cprogrammer1994/Headless-rendering-with-python)。 –