fbpx
维基百科

RenderMan规范

RenderMan规范[1],简称RISpec,是一个开放的应用程序接口(API),由皮克斯开发,用于描述三维模型并把它转换成逼真的数字图像。RenderMan规范作为建模程序和渲染程序之间的通信协议(或称为接口),用于生成逼真的数字图像。规范类似于PostScript,不过是用来描述三维场景而非二维页面布局。因此,理解RenderMan接口的建模软件,可以输出场景数据到符合规范的渲染器(以下简称RenderMan渲染器),而无需关心后者使用什么算法渲染出图像。

RenderMan规范最初发布于1988年,版本号为3.0,3.1版发布于1989年,并在1995年进行了修订,2000年7月,规范发布3.2版。规范的当前版本是3.2.1版,发布于2005年11月[1]。后来的事实证明了规范的前瞻性,规范在多年之后也无需过多改动就能引入新技术。

RenderMan规范和当时的其他标准的不同之处在于它允许使用高级的几何图元,比如二次曲面或双三次曲面来表示图形,而非依赖于建模程序事先生成多边形逼近模型,规范的另一个创新之处是引入着色语言

RenderMan和OpenGL有很多相同之处,虽然两个API是针对不同的用户(OpenGL用于实时硬件辅助渲染,而RenderMan规范则用于逼真图像的离线渲染),两个API都是基于栈的状态机机制直接渲染出几何图形。

RenderMan接口规范内容 编辑

RenderMan渲染接口,主要包括两大部分,第一部分是RenderMan Interface,定义了着色计算所必须的一些基本数据类型,和RenderMan接口字节流协议(RenderMan Interface Bytestream Protocol),简写为RIB,rib也是RenderMan场景描述文件的扩展名;规范的第二部分,是RenderMan着色语言,RenderMan Shading Language,简称RSL,使用RenderMan着色语言编写的源程序,其源代码文件扩展名通常是sl

RenderMan接口 编辑

RenderMan接口,定义了一些基本的数据类型,以规范的C语言实现为例,规范把C语言的short、int、float、char数据类型,分别映射至其RtBoolean、RtInt、RtFloat和*RtToken类型,另外,规范还定义了RtColor、RtPoint、RtVector、RtMatrix等特定于图形学着色计算必要的数据类型。

规范的图形状态(graphics state),包括了渲染一个模型所需的全部信息,RenderMan接口的命令,要么改变图形状态,要么渲染一个模型。图形状态又分为两部分,其一是全局状态,在渲染一幅图像或序列中的一帧时,保持不变;其二是当前状态,针对不同待渲染的模型,可以发生改变。全局状态中的参数,称为选项(Options);当前状态中的参数,称为属性(Attributes)。选项包括相机和显示(指输出像素的)参数,还有其他影响渲染质量的参数;属性包括控制模型外观和材质的参数(比如颜色、透明度、着色模型等),还有模型的位置、朝向和细分程度等参数。

RenderMan规范支持多边形英语Polygon (computer graphics)曲面片细分曲面二次曲面和曲线、元球、程序图元等多样的几何模型

RenderMan着色语言(RSL) 编辑

RenderMan规范引入了RenderMan着色语言,使三维场景的外观不只用很少的参数来描述,而是允许使用类似C语言的程序来编写任意复杂的着色函数,通常称之为程序纹理和着色器(shader)。光照以及表面置换也是可编程的,能用着色语言编程来修改。RSL允许每个语句以单指令流多数据流的方式执行,但不强制使用此方式。另一个使RenderMan渲染器区别于许多其他渲染器的功能是它允许输出着色函数里的任意信息,不管是表面法线、单独的灯光通道还是什么别的信息,都可以使用RenderMan渲染器输出到单独的通道里。

一个RSL编写的着色器,可以用于任何符合RenderMan渲染规范的RenderMan渲染器,比如皮克斯的PRMan、DNA Research的3Delight,以及开源的PixieAqsis

RSL可以编写独立的函数和RenderMan渲染规范定义的五种类型的着色器:surface,light,volume,imager和displacement着色器。

以下是定义塑料表面材质的一个示例着色器:

surface plastic (float Ka = 1, Kd = 0.5, Ks = 0.5, roughness = 0.1;  color specularcolor = 1;) {  normal Nf = faceforward (normalize(N),I);  Ci = Cs * (Ka*ambient() + Kd*diffuse(Nf)) + specularcolor * Ks*specular(Nf,-normalize(I),roughness);  Oi = Os;  Ci *= Oi; } 

着色器通过接收一些可以由艺术家调节的变量比如Cs(表面颜色),Os(表面透明度)等,结合RenderMan渲染规范定义的内置变量N(着色点的法线),P(着色点位置)等,依据一定的算法计算出Ci(最终表面颜色),Oi(最终表面透明度)或任意所需信息,从而完成着色过程。

一个着色器可以用于不同的三维几何模型,每个着色器实例的参数数值可不一样。着色器没有返回值,而是利用“输出变量”存储计算的数值。但函数可以接受参数,并返回一个值。比如,以下函数通过点积操作符“.”计算矢量的长度并将之返回。

float length(vector v) {  return sqrt(v . v); } 

必备功能 编辑

一个RenderMan渲染器,必须实现以下功能:

  • 完全层级化的图形状态(graphics state),包括属性、变换栈(transformation stacks)和有效光源列表。
  • 正交投影透视投影视角变换。
  • 基于深度的隐面消除。
  • 像素过滤和反走样
  • 图像量化前的伽马校正和dithering。
  • 输出图像包括RGB、A和Z的任意组合,并且分辨率可由用户指定。
  • 所有规范里描述的几何图元,以及各图元的标准图元变量。
  • 支持可编程着色。
  • 支持索引纹理贴图环境贴图阴影贴图
  • 须提供规范所要求的十五种标准的着色器,包括light source,surface,volume,displacement和imager等类型。任一新增的和由规范标准衍生的着色器,都必须提供一个等效的RenderMan着色语言描述作为该着色器的文档。

可选功能 编辑

此外,渲染器还可以实现以下的某项功能:

工具 编辑

  • RenderMan 3delight(页面存档备份,存于互联网档案馆),支持免费下载学习 主流的rendemran 渲染软件
  • RIBKit(页面存档备份,存于互联网档案馆),开源的RenderMan工具集,包括一个图形界面的材质编辑器——SLer。
  • 和,3Delight渲染器附带的RIB精简工具和依赖处理工具。
  • ShaderMan.Next(页面存档备份,存于互联网档案馆),开源的材质编辑器,的重写。

RIB导出工具 编辑

  • Softimage
    • Rising Sun Pictures英语Rising Sun Pictures的,开源软件
    • Graphic Primitives的

编程语言实现 编辑

参见 编辑

参考书目 编辑

  • Apodaca, Anthony A.; Larry Gritz, Ronen Barzel. Advanced RenderMan: Creating CGI for Motion Pictures. San Francisco: Morgan Kaufmann Publishers. 1999. ISBN 1-55860-618-1. OCLC 42621055. 
  • Ebert, David S.; F. Kenton Musgrave, Darwyn Peachey, Ken Perlin, Steven Worley. Texturing and modeling: a procedural approach, 3rd ed.. Burlington, MA: Morgan Kaufmann Publishers. 2003. ISBN 1-55860-848-6. OCLC 52689816. 
  • Raghavachary, Saty. Rendering for Beginners: Image synthesis using RenderMan. Burlington, MA: Focal Press. 2005. ISBN 0-240-51935-3. OCLC 57670361. 
  • Stephenson, Ian. Essential RenderMan Fast. London, New York: Springer. 2002. ISBN 1-85233-608-0. OCLC 50494960. 
  • Upstill, Steve. The RenderMan Companion: A Programmer's Guide to Realistic Computer Graphics. Reading, Mass: Addison-Wesley. 1990. ISBN 0-201-50868-0. OCLC 19741379. 
  • Cortes, Rudy; Saty Raghavachary. The RenderMan Shading Language Guide. Course Technology PTR. 2007. ISBN 1-598-63286-8. 


参考资料 编辑

  1. ^ 1.0 1.1 . [2012-12-22]. (原始内容存档于2012-12-23). 

外部链接 编辑

  • ,——规范的官方页面
  • Malcolm Kesson教授的CG参考和教程(页面存档备份,存于互联网档案馆
  • Dominik Susmel的
  • Rendering for Beginners(页面存档备份,存于互联网档案馆)里用到的 RIB文件和材质

renderman规范, 简称rispec, 是一个开放的应用程序接口, 由皮克斯开发, 用于描述三维模型并把它转换成逼真的数字图像, 作为建模程序和渲染程序之间的通信协议, 或称为接口, 用于生成逼真的数字图像, 规范类似于postscript, 不过是用来描述三维场景而非二维页面布局, 因此, 理解renderman接口的建模软件, 可以输出场景数据到符合规范的渲染器, 以下简称renderman渲染器, 而无需关心后者使用什么算法来渲染出图像, 最初发布于1988年, 版本号为3, 1版发布于1989年, 并. RenderMan规范 1 简称RISpec 是一个开放的应用程序接口 API 由皮克斯开发 用于描述三维模型并把它转换成逼真的数字图像 RenderMan规范作为建模程序和渲染程序之间的通信协议 或称为接口 用于生成逼真的数字图像 规范类似于PostScript 不过是用来描述三维场景而非二维页面布局 因此 理解RenderMan接口的建模软件 可以输出场景数据到符合规范的渲染器 以下简称RenderMan渲染器 而无需关心后者使用什么算法来渲染出图像 RenderMan规范最初发布于1988年 版本号为3 0 3 1版发布于1989年 并在1995年进行了修订 2000年7月 规范发布3 2版 规范的当前版本是3 2 1版 发布于2005年11月 1 后来的事实证明了规范的前瞻性 规范在多年之后也无需过多改动就能引入新技术 RenderMan规范和当时的其他标准的不同之处在于它允许使用高级的几何图元 比如二次曲面或双三次曲面来表示图形 而非依赖于建模程序事先生成多边形逼近模型 规范的另一个创新之处是引入着色语言 RenderMan和OpenGL有很多相同之处 虽然两个API是针对不同的用户 OpenGL用于实时硬件辅助渲染 而RenderMan规范则用于逼真图像的离线渲染 两个API都是基于栈的状态机机制直接渲染出几何图形 目录 1 RenderMan接口规范内容 1 1 RenderMan接口 1 2 RenderMan着色语言 RSL 1 3 必备功能 1 4 可选功能 2 工具 2 1 RIB导出工具 3 编程语言实现 4 参见 5 参考书目 6 参考资料 7 外部链接RenderMan接口规范内容 编辑RenderMan渲染接口 主要包括两大部分 第一部分是RenderMan Interface 定义了着色计算所必须的一些基本数据类型 和RenderMan接口字节流协议 RenderMan Interface Bytestream Protocol 简写为RIB rib也是RenderMan场景描述文件的扩展名 规范的第二部分 是RenderMan着色语言 RenderMan Shading Language 简称RSL 使用RenderMan着色语言编写的源程序 其源代码文件扩展名通常是sl RenderMan接口 编辑 RenderMan接口 定义了一些基本的数据类型 以规范的C语言实现为例 规范把C语言的short int float char数据类型 分别映射至其RtBoolean RtInt RtFloat和 RtToken类型 另外 规范还定义了RtColor RtPoint RtVector RtMatrix等特定于图形学着色计算必要的数据类型 规范的图形状态 graphics state 包括了渲染一个模型所需的全部信息 RenderMan接口的命令 要么改变图形状态 要么渲染一个模型 图形状态又分为两部分 其一是全局状态 在渲染一幅图像或序列中的一帧时 保持不变 其二是当前状态 针对不同待渲染的模型 可以发生改变 全局状态中的参数 称为选项 Options 当前状态中的参数 称为属性 Attributes 选项包括相机和显示 指输出像素的 参数 还有其他影响渲染质量的参数 属性包括控制模型外观和材质的参数 比如颜色 透明度 着色模型等 还有模型的位置 朝向和细分程度等参数 RenderMan规范支持多边形 英语 Polygon computer graphics 曲面片 细分曲面 二次曲面 点和曲线 元球 程序图元等多样的几何模型 RenderMan着色语言 RSL 编辑 RenderMan规范引入了RenderMan着色语言 使三维场景的外观不只用很少的参数来描述 而是允许使用类似C语言的程序来编写任意复杂的着色函数 通常称之为程序纹理和着色器 shader 光照以及表面置换也是可编程的 能用着色语言编程来修改 RSL允许每个语句以单指令流多数据流的方式执行 但不强制使用此方式 另一个使RenderMan渲染器区别于许多其他渲染器的功能是它允许输出着色函数里的任意信息 不管是表面法线 单独的灯光通道还是什么别的信息 都可以使用RenderMan渲染器输出到单独的通道里 一个RSL编写的着色器 可以用于任何符合RenderMan渲染规范的RenderMan渲染器 比如皮克斯的PRMan DNA Research的3Delight 以及开源的Pixie和Aqsis RSL可以编写独立的函数和RenderMan渲染规范定义的五种类型的着色器 surface light volume imager和displacement着色器 以下是定义塑料表面材质的一个示例着色器 surface plastic float Ka 1 Kd 0 5 Ks 0 5 roughness 0 1 color specularcolor 1 normal Nf faceforward normalize N I Ci Cs Ka ambient Kd diffuse Nf specularcolor Ks specular Nf normalize I roughness Oi Os Ci Oi 着色器通过接收一些可以由艺术家调节的变量比如Cs 表面颜色 Os 表面透明度 等 结合RenderMan渲染规范定义的内置变量N 着色点的法线 P 着色点位置 等 依据一定的算法计算出Ci 最终表面颜色 Oi 最终表面透明度 或任意所需信息 从而完成着色过程 一个着色器可以用于不同的三维几何模型 每个着色器实例的参数数值可不一样 着色器没有返回值 而是利用 输出变量 存储计算的数值 但函数可以接受参数 并返回一个值 比如 以下函数通过点积操作符 计算矢量的长度并将之返回 float length vector v return sqrt v v 必备功能 编辑 一个RenderMan渲染器 必须实现以下功能 完全层级化的图形状态 graphics state 包括属性 变换栈 transformation stacks 和有效光源列表 正交投影和透视投影视角变换 基于深度的隐面消除 像素过滤和反走样 图像量化前的伽马校正和dithering 输出图像包括RGB A和Z的任意组合 并且分辨率可由用户指定 所有规范里描述的几何图元 以及各图元的标准图元变量 支持可编程着色 支持索引纹理贴图 环境贴图和阴影贴图 须提供规范所要求的十五种标准的着色器 包括light source surface volume displacement和imager等类型 任一新增的和由规范标准衍生的着色器 都必须提供一个等效的RenderMan着色语言描述作为该着色器的文档 可选功能 编辑 此外 渲染器还可以实现以下的某项功能 面光源 景深 置换贴图 环境贴图 全局照明 细节层次 运动模糊 特殊镜头映射 谱色 Spectral colors 光线跟踪 实体建模 体着色工具 编辑RenderMan 3delight 页面存档备份 存于互联网档案馆 支持免费下载学习 主流的rendemran 渲染软件 RenderMan Studio RenderMan Pro Server RIBKit 页面存档备份 存于互联网档案馆 开源的RenderMan工具集 包括一个图形界面的材质编辑器 SLer RIBShrink和RIBDepends 3Delight渲染器附带的RIB精简工具和依赖处理工具 ShaderMan Next 页面存档备份 存于互联网档案馆 开源的材质编辑器 ShaderMan的重写 RIB导出工具 编辑 3Delight 1 页面存档备份 存于互联网档案馆 支持MAYA XSI 即将支持MAX 的版本3ds Max PaxRendus 已停止开发 Blender 开源的ribMosaicLightwave Tim Dapper的LightMan 页面存档备份 存于互联网档案馆 Felipe Esquivel的Light R 免费软件Maya 3Delight for Maya liquidmaya 开源软件 AnimalLogic的MayaMan 页面存档备份 存于互联网档案馆 皮克斯的RenderMan for MayaSoftimage 3Delight for XSI Rising Sun Pictures 英语 Rising Sun Pictures 的Affogato 开源软件 Graphic Primitives的XSIMan编程语言实现 编辑Python计算机图形工具集 页面存档备份 存于互联网档案馆 Python实现 RubyMan Ruby实现 G amp RT 页面存档备份 存于互联网档案馆 Lua实现参见 编辑Reyes渲染架构参考书目 编辑Apodaca Anthony A Larry Gritz Ronen Barzel Advanced RenderMan Creating CGI for Motion Pictures San Francisco Morgan Kaufmann Publishers 1999 ISBN 1 55860 618 1 OCLC 42621055 引文使用过时参数coauthors 帮助 Ebert David S F Kenton Musgrave Darwyn Peachey Ken Perlin Steven Worley Texturing and modeling a procedural approach 3rd ed Burlington MA Morgan Kaufmann Publishers 2003 ISBN 1 55860 848 6 OCLC 52689816 引文使用过时参数coauthors 帮助 Raghavachary Saty Rendering for Beginners Image synthesis using RenderMan Burlington MA Focal Press 2005 ISBN 0 240 51935 3 OCLC 57670361 Stephenson Ian Essential RenderMan Fast London New York Springer 2002 ISBN 1 85233 608 0 OCLC 50494960 Upstill Steve The RenderMan Companion A Programmer s Guide to Realistic Computer Graphics Reading Mass Addison Wesley 1990 ISBN 0 201 50868 0 OCLC 19741379 Cortes Rudy Saty Raghavachary The RenderMan Shading Language Guide Course Technology PTR 2007 ISBN 1 598 63286 8 引文使用过时参数coauthors 帮助 参考资料 编辑 1 0 1 1 RenderMan规范主页 2012 12 22 原始内容存档于2012 12 23 外部链接 编辑RenderMan规范 规范的官方页面 RenderMan仓库 Malcolm Kesson教授的CG参考和教程 页面存档备份 存于互联网档案馆 RenderMan笔记 Dominik Susmel的RenderMan 着色语言教程 Rendering for Beginners 页面存档备份 存于互联网档案馆 里用到的 RIB文件和材质 取自 https zh wikipedia org w index php title RenderMan规范 amp oldid 78989053, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。