论坛首页 编程语言技术论坛

使用Blender和Python来学习3D编程

浏览 19734 次
精华帖 (1) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-04-02   最后修改:2009-04-02
Blender是一个强大的3D建模工具,以前我曾经介绍过:
http://www.iteye.com/topic/322929

Blender提供了非常强大的Python API,可以用来学习3D编程,还可以用来开发游戏。
要注意的是,Blender有两套Python API,一套是用来调用Blender自身的功能,一套是用来调用BGE的功能(做游戏开发)。我在这里仅仅介绍调用Blender自身功能的API。

通过例子来入门是初学者最好的学习方法,我先举个例子:使用Blender的Python API来做3D模型的自动化渲染。
from Blender import Object, Scene, Texture, Image

scene = Scene.GetCurrent()
context = scene.getRenderingContext()
context.setImageType(Scene.Render.PNG)

render_dir = "D:/WORK/blender/render"

img = Image.Load('D:/WORK/blender/pictures/111.jpg')

texture = Texture.Get('tex001')
texture.type = Texture.Types.IMAGE
texture.image = img

cameras = [obj for obj in scene.objects if obj.getType()=='Camera']
for index, camera in enumerate(cameras):
	print '\tRendering %i of %i cameras.' % (index+1, len(cameras))
	context.setRenderPath('%s/%s_' % (render_dir, camera.name)) 
	scene.setCurrentCamera(camera)
	context.render()

print 'Done per camera render'

这段脚本非常简单直观,
1. 首先,得到要渲染场景的context,并将渲染输出文件格式设置为PNG。
2. 加载一个图片。
3. 通过名称(ID)“tex001”找到一个texture,,将该texture使用的图片设置为刚才加载的图片。
4. 遍历3D模型中所有的camera,使用每个camera来做渲染。

将这段脚本保存为render.py,然后执行这段脚本:
blender -b xxx.blend -P render.py
(xxx.blend为Blender的3D模型)
执行之后,渲染结果将保存在设置的目录中。

Blender的Python API非常强大,除了这个例子展示的这些基本功能外,还完整封装了OpenGL的功能(Blender是完全基于OpenGL开发的)。使用Blender的Python API来学习3D编程,是一条很好的途径。

Blender Python API相关文档:
HTML格式的API文档:
http://www.blender.org/documentation/248PythonDoc/index.html
PDF格式的API文档:
http://www.letworyinteractive.com/pdfs/pythondoc_246_20080905.pdf
Blender 3D: Blending Into Python/Cookbook:
http://en.wikibooks.org/wiki/Blender_3D:_Blending_Into_Python/Cookbook
Python Scripting:
http://wiki.blender.org/index.php/Extensions:Py/Scripts
   发表时间:2009-04-02   最后修改:2009-04-02
ray_linn 写道
这个我很早就在applet里干过了.....

我发这个帖,并不是为了证明我牛x,只是想吸引一些人对Blender产生兴趣。你发帖的意图很明显,急于想证明你确实牛x。
你的发言一向不喜欢提供证据,即使我很不情愿地承认你确实牛x,你的大多数发言还是毫无营养可言。
感觉你不仅牛x,而且还很无极。
0 请登录后投票
   发表时间:2009-04-02  
这个和 applet 用法不是一回事

maya max  xsi 这些软件都支持程序脚本
maya也用python

目的是增强一些功能,常用来作一些特殊材质和动画,图形界面操作有他的局限性
程序脚本是很好的补充,国内现在也有一些人用这些脚本开发辅助插件
0 请登录后投票
   发表时间:2009-04-02  
剑事 写道
这个和 applet 用法不是一回事

maya max  xsi 这些软件都支持程序脚本
maya也用python

目的是增强一些功能,常用来作一些特殊材质和动画,图形界面操作有他的局限性
程序脚本是很好的补充,国内现在也有一些人用这些脚本开发辅助插件



applet的用法是可以把3D max或者maya开发图形展示给客户,允许客户online更换材质。比如一个杯子,我可以展示红、黄、蓝、大理石等等不同的色泽。

这样是不是更有商业意义?

至于dlee,就不说了,不就是分数高么?爱投隐藏就投去呗。
0 请登录后投票
   发表时间:2009-04-02   最后修改:2009-04-02
ray_linn 写道
剑事 写道
这个和 applet 用法不是一回事

maya max  xsi 这些软件都支持程序脚本
maya也用python

目的是增强一些功能,常用来作一些特殊材质和动画,图形界面操作有他的局限性
程序脚本是很好的补充,国内现在也有一些人用这些脚本开发辅助插件



applet的用法是可以把3D max或者maya开发图形展示给客户,允许客户online更换材质。比如一个杯子,我可以展示红、黄、蓝、大理石等等不同的色泽。

这样是不是更有商业意义?

至于dlee,就不说了,不就是分数高么?爱投隐藏就投去呗。


用途不一样,比如渲染成动画片视频,一般都是实现一些比较复杂的功能效果而且是结合3D软件一起跑的,设计到坐标贴图,动力学模拟,IK ,毛发等好多东西。程序脚本是辅助实现,作脚本擅长的功能部分。
applet是拿3D模型作类似展示,带交互功能,但功能不强效果比较简陋。
以前win98时代jre默认安装在系统里 web上正好可以applet作3D全景展示,比其它软件都方便,XP 之后大家都平等了
applet效果又一般,和其它几个比就比下来了
0 请登录后投票
   发表时间:2009-04-02   最后修改:2009-04-02
剑事 写道
用途不一样,比如渲染成动画片视频,一般都是实现一些比较复杂的功能效果而且是结合3D软件一起跑的,设计到坐标贴图,动力学模拟,IK ,毛发等好多东西。程序脚本是辅助实现,作脚本擅长的功能部分。

是啊,再往高端做还有render farm,3ds Max/Blender都可以作为render farm的节点来做渲染。render farm在游戏工业和电影工业中应用得很广泛,有巨大的商业价值。
ray_linn 写道
至于dlee,就不说了,不就是分数高么?爱投隐藏就投去呗。

你看,又武断了吧。其实我对你的所有发言从来都没有投过隐藏。
0 请登录后投票
   发表时间:2009-04-05  
hmm....最近正在研究opengl中,,dlee老大的东西 可以参考参考。
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics