POV-Ray

维基百科,自由的百科全书
跳转到导航 跳转到搜索
POV-Ray
File:POV-Ray SC.jpg
POV-Ray屏幕截图(Windows XP)
开发者The POV-Team
当前版本3.7.0(2013年11月9日 (2013-11-09)
预览版本3.7 rc3
源代码库
  • {{URL|example.com|可选的显示文本}}
Module:EditAtWikidata第29行Lua错误:attempt to index field 'wikibase' (a nil value)
引擎
    Module:EditAtWikidata第29行Lua错误:attempt to index field 'wikibase' (a nil value)
    操作系统WindowsMac OS Linux
    类型三维计算机图形
    许可协议AGPLv3[1]
    网站www.povray.org

    POV-Ray,全名是Persistence of Vision Raytracer,是一个使用光线跟踪绘制三维图像的开放源代码自由软件。运行POV脚本语言。它是基于DKBTrace来开发的,DKBTrace是由David Kirk BuckAaron A. Collins编写在Amiga上的。POV-Ray早期也受到了Polyray raytracer作者Alexander Enzmann的帮助。很多漂亮的图片就是由POV-Ray来制作的。

    历史[编辑]

    该软件最初发展始于80年代,是一个历史悠久的三维算图引擎。David Kirk Buck下载了一个为Unix编写的Amiga光线跟踪软件的源代码。当他玩了一段时间后,他觉得应该自己写一个类似软件,以自己的名字缩写命名为DKBTrace,以。于是他将它贴在了一个电子布告栏上面,以为别人也许对它感兴趣。1987年,Aaron Collins下载了DKBTrace然后开始了x86机器的移植工作。他和David Buck一起合作为它添加了更多功能。

    这个软件越来越流行,他们已经为了加新功能而应付不过来。1989年7月,David把这个软件变成了一个程序员团队合作的项目。这时候,他觉得继续用自己的名字来命名不甚妥当,因为他已不再维护此软件。所以考虑了很多新的名字。最初打算使用“STAR-Light”(为动画和渲染而生存的软件:Software Taskforce on Animation and Rendering),但是最后变成了“持续不断更新版本的光线跟踪引擎Persistence of Vision Raytracer”,简写为“POV-Ray”。

    POV-Ray是第一个在空间轨道渲染出图片的光线跟踪软件,由马克·沙特尔沃思国际空间站渲染。

    特征[编辑]

    POV-Ray不像一般的3D软件有图形化使用界面,其使用自有脚本语言来描述场景。POV脚本语言具备图灵完备性,可以编写巨集以及循环程式。

    • 支援几种几何元素以及构造实体几何
    • 物件表面的折射、反射。
    • 支援TGA、PNG影像格式

    当前版本[编辑]

    最新的版本是3.7。

    基元[编辑]

    场景描述语言(Scene Description Language)例子[编辑]

    下面的例子给出了场景描述语言(Scene Description Language)在POV-Ray的一个应用实例。展示了使用视角,光源,一个简单的方块模型和缩放,旋转,平移变换的效果。

    File:I example povray scene rendering.png
    POV-Ray根据左边的脚本的对应输出
    #version 3.6;
    #include "colors.inc"
    global_settings { assumed_gamma 1.0 }
    
    background   { color rgb <0.25, 0.25, 0.25> }
    
    camera       { location  <0.0, 0.5, -4.0>
                   direction 1.5*z
                   right     x*image_width/image_height
                   look_at   <0.0, 0.0, 0.0> }
    
    light_source { <0, 0, 0>
                   color rgb <1, 1, 1>
                   translate <-5, 5, -5> }
    
    light_source { <0, 0, 0>        
                   color rgb <0.25, 0.25, 0.25>
                   translate <6, -6, -6> }
    
    box          { <-0.5, -0.5, -0.5>
                   <0.5, 0.5, 0.5>
                   texture { pigment { color Red }
                             finish  { specular 0.6 }
                             normal  { agate 0.25 scale 1/2 } }	
                   rotate <45,46,47> }
    

    下面的脚本片段展示了使用变量声明,赋值,比较和while循环结构。

    File:I example povray scene rendering2.png
    POV-Ray根据左边的脚本的对应输出
    #declare the_angle = 0;
    
    #while (the_angle <= 360)
    	box {   <-0.5, -0.5, -0.5>
    		<0.5, 0.5, 0.5>
                   texture { pigment { color Red }
                             finish  { specular 0.6 }
                             normal  { agate 0.25 scale 1/2 } }
    		rotate the_angle }
    	#declare the_angle = the_angle + 45;
    #end
    

    外在连结[编辑]