Run renderman compatible render engine aqsis on armv6

reference http://alvyray.com/Pixar/documents/Pixar_ImageComputer.pdf https://ohiostate.pressbooks.pub/app/uploads/sites/45/2017/09/pixar-image-processor.pdf Pixar Image Computer 启发我写这篇文章的原因是上个月也就是三月份我快速的看了一遍《The Renderman Companion A Program’s Guide To Realistic Computer Graphics》,书里面主要描述的是如何利用Renderman C API接口去实现3D图像的渲染,这本书是在1989年出版的,当时的Pixar已经开发了Renderman渲染接口标准,并且实现了目前电影工业广泛使用的PRMan(PhotoRealistic Renderman实现。其中有意思的是在1986年Pixar还开发了类似今天的Nvidia通用显卡的计算机图形学硬件系统—Pixar Image Computer。 在没了解Pixar之前,我以为Nvidia是最早做显卡的,原来还有更早的Pixar Image Computer,它的使用方式类似现在Nvidia显卡,做为一个扩展卡与本地计算机进行通讯,本地CPU发送数据到Pixar Image Computer中进行计算,然后从Pixar Image Computer中取回计算好的数据。具体架构如下: 设计这样的架构优点就在于以下三点: 通用硬件设计的实现 并行执行图像处理操作 支持多个CHAPs系统 架构设计: Pixel data structure: 所有的Pixar Image System组件都被设计成可以容纳"Pixel data structure"这样的数据结构,其中结构体当中包含RGBA(Red Green Blue Alpha)各个通道的存储信息。 Chap:Chap包含四个处理器,分别用来处理RGBA四个通道的数据,CHAP是一个单指令多数据处理的机器,四个核心处理器会分别在四个通道上执行相同的指令,每一个处理器分别处理对应通道的数据。 CHAP数据处理的循环过程: ALU: 由AMD29116A芯片组成,所有的四个ALU在一个像素点的四个通道数据上执行相同的指令。 Multiplier: 数据由MBUS进入,通过乘法处理将结果输出到ABUS。 Pbus buffer: 像素数据在CHAP和image Memory之间的交换。 Yapbus buffer: 在CHAP与CHAP之间进行数据交换。 Scratchpad: 程序执行期间像素数据高速暂存存储器。 Write crossbar: ABUS的目的地,过滤控制哪些数据可以写入到Scratchpad。 Read crossbar: SBUS的源头,对读取到的数据进行分类。 Yapbus: CHAP与CHAP之间的数据交换。 ...

April 5, 2022

深度学习超分辨率在电影工业的应用

论文 Deep Learned Super Resolution for Feature Film Production 学习 最近我一直在学习三维建模渲染和制作,看到一篇关于Pixar在2020年发布的论文,主要内容是关于Pixar内部的工程师开发人员如何利用深度学习来提升渲染图像的分辨率,精细的渲染一帧4k图像可能会消耗很多资金成本,如果最终渲染2k分辨率的图像然后利用深度神经网络将其提升到4k,图像在细节上更加细腻和丰富,那么在渲染的成本上可以帮助公司降低很多成本。和以前的超图像超分辨率提升模型不一样,电影工业通常使用的图像都包含有光照的高动态范围,和对色彩的真实还原的数据,这就使得目前的主流超分辨率模型根本无法使用在电影领域。这也是我目前感兴趣的领域,因为将深度学习用于工业领域比起理论上更加具有实际意义。 摘要 伸缩技术通常用于创建那些成本高昂甚至无法制作的高分辨率图像。近年来,深度学习方法相比传统的方法而言在改善图像细节,提升图像清晰度方面有所改善。在这里我们讨论将深度学习的超分辨率技术用于皮克斯电影工业的动机和挑战,使用该技术可以降低渲染农场的支付成本,同时实现生成高分辨率的内容。 背景和相关工作 为了提高图像的分辨率,通常使用几种技术,如 nearest-neighbor, bilinear,以及bicubic interpolation。在电影业中,通过Nuke节点TVIScale,total variation inpainting技术已被证明在提高分辨率方面很有成效。近年来,深度卷积神经网络通过从大量数据中学习低分辨率(LR)到高分辨率(HR)的映射,展示了更高的重建质量。随着生成式对抗网络(GANs)和感知损失函数在开创性的SRGAN工作中的引入,伸缩器现在可以产生与真实相比无法分辨的细节和清晰度的图像。我们在皮克斯工作的目的是将GANs投入生产,用于图像的分辨率伸缩。 训练集 训练一个超分辨率模型需要成对的高分辨率和低分辨率帧图像。大多数先前的研究依赖于预先建立的数据集,这些数据集由代表HR(High Resolution)的高分辨率照片和通过采用下采样操作(通常是bicubic)获得的LR(Low Resolution)照片组成。然而,在我们的测试中,在bicubic降采样图像对上训练生成的预训练超级分辨率模型并不能推广到新的数据上(即没有新的细节被生成),因为现实世界的降级操作比Bicubic降采样要复杂得多。在皮克斯,我们有一个渲染器来合成图像对,有高质量的场景(有不同的着色器、几何和光照条件),还有一个经过微调的数据中心来进行大规模的渲染。 为了获得训练数据,我们使用RenderMan渲染了分辨率为1-2K的生产图像对,其中的镜头从《Coco》、《Incredibles 2》、《Toy Story 4》、《Onward》和《Soul》中随机抽取。由于一个给定的镜头中包含多个通道(如实体元素、体积和天空),在生产管道的最后步骤进行合成,我们收集所有的元素,不包括Deep Layer。我们对已知的与分辨率有关的参数进行修正,如微多边形长度和相机射线差倍率。尽管如此,我们仍然偶尔会注意到不相关的对,并将它们从训练集中排除。我们注意到,我们经常不能重新使用以前定稿的2K渲染图,因为即使在定稿后,由于生产的变化,镜头也经常发生变化。我们还从UHD版本中获得预先存在的4K渲染图,并将任何连贯的2K-4K对添加到数据集中(通常每个节目的一小部分是以4K渲染的,其余的是用TVIScale从2K放大的,因为大规模4K渲染的成本很高)。我们最终得到了一个包含3700对的数据集。 训练管线 我们在文献中观察到,最先进的超分辨率深度学习模型是使用具有对抗性训练的深度残差网络[Wang et al. 2018]。架构或损失函数的微小差异使这些模型与众不同。我们从一个开源的训练环境和网络架构开始,然后我们创建了一个PyTorch开发环境,并准备了一个台带有两个24GB NVIDIA Quadro P6000 GPU的Linux实例。 生产线特点 大多数超分辨率的工作没有考虑到高动态范围HDR图像,但这样做在电影行业是至关重要的。HDR数据通常用超过1的浮点数表示,并存储在OpenEXR这样的文件格式中。由于神经网络在处理输入数据时将其归一化为[-1, 1]或[0, 1]时表现最好,我们就应用以下范围压缩函数来适应HDR数据[Bakoetal.2019]:Ty =k*log(1+μy)/log(1+μ)。我们设置k=0.6和μ=5000,提供范围到亮度值接近300。然后,我们将压缩数据集转换成一个高性能的数据结构,即闪电内存映射数据库,比直接读取EXR图像的训练速度加快了约1/3。 我们试验了一种新的数据增强策略,即在(LR,HR)对中引入随机颜色移动,使网络对不同的光照条件更加精准。我们通过添加一个随机颜色(cr, cg, cb )∈ [-0.01, 0.01],给每个颜色通道添加变换:R’=R+cr, G’=G+cg, B’=B+cb。我们发现这提高了模型的泛化能力。 一个关键的挑战是解决生成的图像中不需要的颜色偏移。我们引入了一个额外的损失项,对下采样生成的图像和输入的LR图像之间的l1损失进行惩罚。有了这个额外的损失项,我们在训练的网络输出中没有发现任何颜色的偏移。我们进行了超参数调整实验,以最大限度地提高合成图像的清晰度,同时避免通常伴随着GANs的过度噪音伪影。我们最新训练的网络偶尔会在文本上产生边缘伪影(如片尾字幕),我们预计获得更多带有文本的训练数据将有助于消除这些伪影。纯PSNR网络(无GAN)不会产生边缘或噪音伪影,但会模糊一些高频细节,如胶片颗粒或小亮点。 我们的网络用纯PSNR损失项预训练了215k次,然后用GAN、色移损失和感知(特征)损失项训练了340k次。我们根据强度使用192x192的卷积核进行采样,最小批次为20。损失项的权重是{PSNR, colorShift, feature, GAN}={1, 5, 0.1, 0.0005}。我们的训练时间为:仅PSNR为108小时,GAN为208小时(总训练时间为316小时)。我们在GPU上正向推演从2K到4K图像的转换时间约为15秒,我们强调该模型可以在任何输入分辨率下提升分辨率(受GPU/CPU内存限制)。在开发的后期,我们开始在英伟达的DGX2超级计算机上进行训练,这使训练速度加快了5倍左右,并能同时运行多个实验。 结果 我们已经训练并部署了一个生产质量的超分辨率模型,在大多数情况下,特别是在TVIScale合成的细节不足和需要4K渲染的情况下,能够持续产生高质量、无伪影的高分辨率图像。即使在有景深、运动模糊和/或体积的场景中,质量也是一致的,因为这些现象在训练集中都有体现。Onward UHD光盘的元素用我们的模型进行了升级,并计划在Soul上进行更广泛的使用。我们的工作正在积极测试其他的使用情况,如宣传工作和主题公园的交付产品。此外,我们最新的训练模型显示,我们有希望建立一个可以在1K下渲染并提升为2K的工作管道,如果用于所有的中间渲染,这将为工作室节省50-75%的渲染场占用空间。 未来的工作 我们的超分辨率模型只支持RGB颜色通道的单帧升频,这使得我们的工作只在工作管道的末端有用。对于在中间渲染中的使用,需要对阿尔法通道进行伸缩,鉴于预先训练的判别网络通常只支持RGB,这就不是一件简单的事情。虽然我们目前的模型产生了时间上的一致性结果,但没有像[Bako等人,2017]那样吸收跨帧输入,这样做对我们来说仍有帮助。我们预计考虑到辅助特征缓冲区,如法线和反射率,将进一步提高合成图像的质量。此外,我们预计我们的训练时间和推理速度将随着网络量化和修剪而提高。最后,虽然我们到目前为止一直专注于2倍放大,但4倍放大在之前的工作中已经显示出巨大的前景,并可能有助于高分辨率的宣传片的渲染和为最近进入市场的8K电视提供内容。为此,在我们的测试中,运行2倍网络的多个通道已显示出潜力。 引用 Steve Bako, Mark Meyer, Tony DeRose, and Pradeep Sen. 2019. Offline Deep Importance Sampling for Monte Carlo Path Tracing. In Computer Graphics Forum, Vol. 38. Wiley Online Library, 527–542. ...

March 14, 2022

Renderman 历史

创新艺术 提到Renderman,那么我们也就不得不提Pixar,对,就是这家制作动画电影的工作室。与其说Renderman的历史还不如讲讲Pixar的历史,正是因为Pixar工作室的艺术家需要在数字世界里面创造真实的影像才诞生了Renderman。我们来看下这家工作室的历史背景。 通过Pixar的发展历史可以看出科学与艺术在电影创作的世界里是相辅相成的,我们来了解下Renderman到底是什么工具。就像画画一样,画家通过不断的对周围事物的观察,在大脑中记忆自己所看到的物体的色彩,光影,然后依靠自己的双手将三维世界的物体呈现在两纬的画布上,Renderman就是这样一组工具,我们告诉他三维空间中都有哪些物体,光源在哪里,摄影机的位置和观察这个空间的角度是怎么样的,将这些数据输入到Renderman中,Renderman就会生成一张类似画家画完画后的两纬图像,Rendering在中文中解释为渲染,渲染一张图片当然还是不够的,我们要让观赏这幅画的人感觉画面是用真实的摄影机拍摄的,那么我们就需要在计算机的世界中去模拟现实世界的光影和色彩,这也是Renderman需要去实现的。告诉Renderman三维空间中有哪些物体,哪些光源,摄影机的位置,这个是由计算机建模来完成的,模型建立完成之后,我们可以输出兼容Renderman程序的场景描述文件,将这一描述文件输入到Renderman中,我们也就得到了具有真实质感的照片,Renderman其实就是对一系列外部接口的规定和实现,将Rendering从建模中抽离出来进行独立的开发,那么任何三维建模程序只要能够通过这些接口与Renderman进行通讯,都可以将场景描述输送到具有Renderman接口实现的渲染器中渲染图像。 Pixar每一部电影制作都会用到Pixar工作室实现的Renderman渲染器-PhotoRealistic RenderMan,1988年pixar开发了Renderman的初版本,经过30多年的发展,Renderman不断的在被Pixar的工程师和科学家们优化和改进。最近发布的24版本中PRMan可以处理能够想象到的最复杂的3D场景,能够同时使用CPU+GPU进行渲染的XPU技术,以及经过多部电影考验的着色技术,最重要的是他支持了开源的三维建模动画程序Blender。学习Renderman就如同像站在巨人的肩膀上一样,使得我们能够更充分更扎实的去了解计算机图形学。 文档翻译计划 早期使用Pixar Renderman,用户还需要学习编程技术,现在Renderman的使用更加人性化,但是相比于市面上流行的其他渲染器而言,Renderman还是缺少许多具体的使用文档和教程,尤其是中文领域。我目前已经在着手翻译Renderman的官方文档和Pixar的具体论文,借助DeepL的帮助翻译进度还是蛮快的。

February 25, 2022

ACES 色彩管理

参考文章 https://docs.blender.org/manual/en/latest/render/color_management.html https://rmanwiki.pixar.com/display/REN24/Color+Management https://www.arri.com/en/learn-help/learn-help-camera-system/camera-workflow/image-science/aces https://github.com/colour-science/OpenColorIO-Configs https://acescentral.com/knowledge-base-2/using-aces-reference-images/ https://opencolorio.readthedocs.io/en/latest/configurations/aces_1.0.3.html 聊聊Gamma修正(Gamma Correction) Table[x^2.2, {x, 0, 1, 0.1}] {0., 0.00630957, 0.0289912, 0.0707403, 0.133209, 0.217638, 0.325037, \ 0.456263, 0.612066, 0.79311, 1.} Table[x, {x, 0, 1, 0.1}] {0., 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.} Table[x^(1/2.2), {x, 0, 1, 0.1}] {0., 0.351119, 0.481157, 0.578533, 0.659353, 0.72974, 0.792793, \ 0.850335, 0.903545, 0.953238, 1.} #^2.2 & /@ Table[x^(1/2.2), {x, 0, 1, 0.1}] {0., 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.} 初步了解下gamma函数,从上述的表达式中可以看出,通过gamma函数2.2得到的变换,我们可以通过反gamma函数 1/2.2,将输入和输出保持在线性关系上。 ...

January 30, 2022

Renderman24 for Blender - Cameras in Blender

参考资料 Renderman 24 For Blender Doc Blender中的摄影机 Blender中的景深 景深(DOF)是一种摄影技术,用于传达构图中的规模(大小)和兴趣区域。 巧妙的使用可以将观众引向图像的某些部分,并通过正确模仿现实世界的镜头来增加逼真度。 RenderMan为具有景深的现实和引人注目的图像提供控制。还有一些非物理性的选项,但对于创造艺术指导的图像来说是非常好的。 要在Blender中开始使用DOF,请进入你要渲染DOF的相机的相机数据属性,然后点击景深旁边的复选框,如下图所示。 F Stop: 像真正的相机镜头一样,这个设置控制了效果的强度。较低的数值会增加模糊度,而较高的数值会减少模糊度。 Ratio: 景深的比例。 Blades: 这决定了虚化效果的形状。如果你选择少于三个边(三角形),虚化效果将是圆形。 Rotation: 这控制了非圆形的虚化形状的边的相遇角度(边的数量大于2)。 Roundness: 从0到1的数值使形状向外弯曲,使其更加圆滑。从0到-1的值使形状向内弯曲,使之更尖锐。 Density: 这控制整个虚化形状的亮度。0到1使它在外边缘更亮,就像猫眼镜头一样(查一查,相当有趣)。0到-1使它在中心更亮,并向边缘逐渐消失。 关于各种光圈控制的更多信息,见Bokeh。 焦点 Focus Distance: 你希望对焦的物体或位置的距离,以场景网格单位衡量。这被称为 “焦平面”。 Focus Object: 你也可以从场景中选择一个物体来作为你的距离。RfB将使用这个值而不是为距离设置的值。 Blender中的运动模糊 让我们来看看一个简单的场景,它展示了运动模糊设置的效果。 下面的图片显示了两个球在第1、2、3帧的位置。 在这个例子中,关键帧是用线性切线制作的,所以当我们观察快门时间时,球会保持一个固定的速度。 运动模糊可以在渲染属性中,在运动模糊面板下启用。 默认情况下,它是不启用的。 渲染属性中的运动模糊,默认情况下是不启用的。 快门时间 开始帧 下面的图片显示了第1、2和3帧的 “开始帧” 模糊。 快门在画面开始时打开。 默认的快门角度为180,意味着快门打开了一半的画面。 注意最后一帧是如何没有模糊的。 这是因为在该帧的快门打开时间之后没有运动。 中间帧 以下图片显示了中间帧模糊,这意味着快门在画面之前打开,之后关闭,以画面为中心。 第一帧和最后一帧的模糊看起来缩短了,因为动画没有延伸到这些帧之外。 结束帧 下面的图片显示了帧结束的模糊,这意味着快门在帧上关闭。 同样,第一帧没有模糊,因为该帧之前没有动画。 运动采样 Motion Samples 我们的红球在第二帧中的模糊看起来有点奇怪。 模糊是水平的,而球真的应该在那条线的中间达到一个顶点。 默认情况下,只有两个运动采样,因为它们很昂贵,而两个通常就足够了。 你可以在渲染属性的Motion Blur面板中改变全局运动样本的数量。或者如果你知道只有某块几何体需要额外的样本,你可以在球体的对象属性中添加它们。在RenderMan Geometry面板下,你会看到一个复选框来覆盖Motion Samples,以及一个Motion Samples属性。 ...

January 25, 2022

Renderman24 for Blender - Rendering in Blender

参考资料 Renderman 24 For Blender Doc Blender中渲染 Blender中的集成器 集成器接收摄像机的光线,并将结果返回给渲染器。对于主要的集成器来说,这些集成器是对沿射线从外部看到的表面的光能(辐射度)的估计。这些主集成器负责计算整体的光传输,也就是说,光从光源穿过你的场景,从物体到物体(或者穿过物体和体积),到达摄像机。在特殊情况下内部集成器可以协助处理表面或体积内的光线。我们提供了三种主要的用于生产环境的集成器,尽管用户可以用自己的集成器来代替。 PxrPathTracer 实现了一个单向的路径追踪器。它将击中点的材质信息与光线样本结合起来,以估计直接照明和阴影,然后产生/发射额外的光线来处理间接照明。这对环境光和大型直接光源很有效。通常,外部场景,由圆顶灯/HDRI照明的场景以及许多典型的视觉效果镜头都是用这个集成器渲染的。 PxrVCM用双向路径追踪来扩展它。除了来自摄像机的路径之外,它还追踪来自光源的路径,并试图将它们连接起来。它可以解决复杂的间接路径,这些路径可能在PxrPathTracer中收敛得很慢。特别是,它被设计用来处理镜面光晕。光晕是光线在反射或折射到表面后重新聚焦的一种效果。上面的图片展示了这两种效果。如果你的场景需要这些效果,或者你有复杂的照明,其中一些灯可能被覆盖或隐藏在灯具中,那么PxrVCM集成器是你最可能的有效选择。 PxrUnified是可用的,但目前是试验性的,直到它支持商业版本RenderMan的所有功能。 在Blender中设置集成器 默认情况下,RenderMan for Blender会使用PxrPathTracer作为场景的整合器。要设置/使用一个不同的集成器,请进入渲染属性,并点击添加RenderMan集成器节点树。 然后你应该看到像这样的画面。 你可以通过使用下拉菜单选择不同的集成器。 注意,Blender中的集成器只是world node中的着色节点shading nodes。如果你在着色器编辑器中查看world node的着色节点,你应该看到像这样的节点。 Blender中的采样和显示滤镜(Sample && Display Filters) 采样和显示滤镜插件分别用于在集成器产生着色采样值和像素值后,在它们被发送到显示驱动display driver之前,对它们进行调整。 采样滤镜 Sample Filters 采样滤镜插件描述了在对采样值进行像素过滤之前对其进行的颜色转换。 它们在像素滤波应用于原始相机射线样本之前对其进行操作。 一旦一个采样过滤器改变了一个样本,并且进入了帧缓冲区,它就会成为任何渲染图像(包括深层图像)的永久组成部分。请注意,如果一个单一的任意输出变量(AOV)作为多个图像文件的一部分被输出,对一个样本的单一改变可能会影响到所有的文件。采样过滤器所做的改变也会影响自适应采样器。 PxrSampleFilterCombiner PxrCryptomatte 显示滤镜 Display Filters 显示滤镜插件描述了在像素过滤后和输出前对最终像素值进行的颜色转换。 在这一点上,多个图像共享的AOV被认为是不同的,可以单独修改。目前不支持深层图像的显示过滤器,对自适应采样器没有影响。 PxrLightSaturation PxrDisplayFilterCombiner PxrImageDisplayFilter PxrShadowDisplayFilter 在Blender中的设置 你可以在渲染属性中创建显示和采样过滤器。点击Add RenderMan Display Filters Nodetree按钮或Add RenderMan Sample Filters Nodetree。 你应该看到"Display Filters" 和 “Sample Filters"的面板展开,类似于以下情况。 点击添加RenderMan显示滤镜节点将自动添加一个PxrBackgroundDisplayFilter节点,并继承World颜色作为背景色。 可以使用多个显示和采样过滤器。点击 “添加 “将添加一个新的槽,可以添加一个额外的显示过滤器或样本过滤器。要删除一个过滤器,点击名称旁边的-按钮。像集成器一样,显示和样本过滤器只是world node内部的着色节点。 ...

January 24, 2022

Renderman24 for Blender - Stylized Rendering and Lighting

参考资料 Renderman 24 For Blender Doc 风格化渲染 风格化的船舶形状是由9 to 3 Animation的Ernst Janssen Groesbeek创建的,船舶概念由Ian McQue创作,机器人概念由Ruslan Safarov创作,模型由Cheyenne Chapel, Aliya Chen, Damian Kwiatkowski, Alyssa Minko, Anthony Muscarella和Miguel Zozaya制作。 © Disney/Pixar - RenderMan “Shipshape” Art Challenge Blender中的风格化外观 在Blender中使用风格化外观进行渲染是非常直接的,只需要几个简单的步骤。 在使用Stylized Looks进行渲染之前,请确保在你的场景中添加一个灯光,并为你的物体附加一个RenderMan材质。 在视口中点击右键,选择RenderMan → Stylized Looks → Stylized Looks Editor。 启用风格化外观,选择一个对象,然后从Attach Stylized Pattern中选择一个PxrStylizedControl。 按OK键现在将创建所需的PxrStylizedControl节点并附加到机器人模型的PxrSurface上。 PxrStylizedControl网络需要附加到场景中的每个物体上,并允许对每个物体进行单独的阴影控制。 这也可以通过选择一个物体和RenderMan→风格化外观→附加风格化图案→PxrStylizedControl来实现。 使用RenderMan Stylized Editor,你现在可以开始添加Stylized Filters,开始创建你独特的Stylized Look。 在这个例子中,我们将添加一个PxrStylizedHatching过滤器。 现在,启动IPR,你的场景现在将以风格化的外观进行渲染 注意:在这个例子中,默认的设置已经被调整过了,具体如下。 a) Signal Energy From: 反照率AOV b) Blending Mode: 加权 ...

January 22, 2022

Renderman24 for Blender - Shading

参考资料 Renderman 24 For Blender Doc 着色 RenderMan for Blender中的材质和着色网络的建立方式与Blender的内置渲染器基本相同,都是使用Shader Editor。但是,有一些快捷方式和用户界面部件是不同的。 添加材质 你可以使用 “对象上下文菜单 “中的快捷键将材质(bxdf)附加到选定的对象上。 这将把选定的材质附加到大纲目录中的选定对象上。 你也可以在 “材质属性 “选项卡中,以通常的方式将材质附加到一个物体上。 点击新建。 然后点击添加RenderMan节点树 并选择你想使用的RenderMan材质。 RenderMan着色网络总是以RenderMan材质输出节点为终点。 下面是一个着色网络的例子。 样式/模式Patterns 样式节点可以用Shader Editor的常规方式连接到材质或其他样式上,或者直接在Material properties Tab中连接。 对于可以接受样式连接的参数,在参数值旁边会显示一个。这就是我们的连接小部件。 点击这个小部件将显示我们的连接菜单。这里有一个例子。 模式将被分成几类,以便于浏览。__EXISTING__部分将显示着色器图中现有的节点,你可以连接到这些节点。如果参数已经被连接了,会出现一些更多的选项。 最上面一行将显示当前连接到这个参数的节点。断开项目将断开该参数与传入节点的连接。移除项目将断开并从图中移除传入的节点。Solo Input Node(单独输入节点)允许你单独传入的节点。如果你想集中精力调整这个节点,这是很有用的,与整个材质无关。 Blender置换 要在RenderMan for Blender中渲染几何体的位移,请使用PxrDisplace 节点。 添加PxrDisplace 要添加PxrDisplace,确保你已经为你的几何体添加了一个RenderMan材质。在材质属性中,在位移Displacement面板下,从 “位移Displacement “旁边的下拉列表中选择PxrDisplace。 你可能要处理的主要参数是。 Gain: 位移的增益,如果它是零,就没有位移。 Scalar Displacement: 标量位移的输入。这是一个浮动的位移。 Vector Displacement: 矢量位移输入。矢量位移数据是一个三通道数据文件,XYZ。 还有一些关于Displacement的实用模式。 对于变换相关的功能,使用PxrDispTransform模式。 对于位移Displacement分层,使用PxrDispScalarLayer和PxrDispVectorLayer 模式。 避免多边形网格出现裂缝 当用硬法线置换网格时,面会分离并产生裂缝。置换会沿法线方向移动顶点,但硬边不同一侧的相邻顶点具有不同的法线,会向不同的方向移动,从而产生缝隙或裂缝。 RenderMan有一个"polygon:smoothdisplacement"属性,它将创建一个完全平滑的法线副本,并使用它代替原始法线。 在RenderMan for Blender中,这个属性是由网格上的对象数据属性中的 “Prevent polygon cracking"复选框启用的。 ...

January 21, 2022

Renderman24 for Blender - Geometry

参考资料 Renderman 24 For Blender Doc Renderman 20 Doc 几何体 Blender归档 导出到RIB归档 要将一个几何体或一组几何体导出到RIB存档,选择对象,进入对象属性,在RenderMan几何体面板下,选择导出,然后将对象导出为存档。 你还可以选择是否要导出分配给几何体的材质,以及是否要将所有的帧存档。 如果你预计需要覆盖存档对象上的材料,请取消选择导出材料。 导入RIB档案 你可以从添加菜单中导入RIB档案。 覆盖材料 如果你想给RIB档案附加一个材料,你可以使用对象属性中的材料覆盖面板来实现。注意:如果存档中的对象本身已经有一个材料,那么它将被优先考虑。 Blender中的OpenVDB体块 要添加一个OpenVDB体积几何,请使用添加菜单中的导入OpenVDB。 这将添加一个Blender OpenVDB节点,以及附加一个PxrVolume着色器。下面是一个使用OpenVDB网站上的bunny_cloud.vdb例子的渲染。 OpenVDB的属性Attributes Filter Width: 如果设置为0,则禁用mipmapping。如果大于0,小于1的值偏向于更精细的mipmap级别,大于1的值偏向于更粗糙的级别。 Density Multiplier(密度乘数): 对体积的密度网格中的数值进行缩放。这应该比缩放着色器中的密度更有效。 Density Rolloff: 大于0的值在密度值中产生一个对数的衰减。较小的滚降值产生较大的衰减。 DSO Min/Max: 目前只用于aggregate volumes,并且只用于使用ImplicitField DSO Volumes(如OpenVDB)。如果设置为1,DSO可以直接使用文件中存储的信息来计算卷内的最小和最大值。这可以让渲染器避免在前面对体积进行着色,从而大大减少到达第一个像素的时间。只有在直接使用体积中的密度信号,或者密度信号仅由DSO本身调制的情况下,才能启用这个功能。任何对密度信号的着色修改都需要将这个参数设置为关闭。 Blender中的程序性基本元素 对于程序性基本元素,RenderMan for Blender同时支持程序性基元DSO(dynamic shared objects)和RunProgram。关于如何编写/编译这些类型的程序性基元的更多信息,请参见《开发者指南》中的这一部分。 添加 您可以从添加菜单中添加任一类型的程序性基元。 DSO 要向你的 RunProgram 传递参数,请在 RenderMan Geometry 面板下的对象属性中查看;应该有一个 Dynamic Load DSO 子面板。 Blender中的四边形基本结构 添加菜单中的这个菜单可以创建RenderMan四边形基元。 这里是所有可用的四维基元的渲染。从左到右。 球体、圆柱体、圆锥体、圆盘、环形体 ...

January 18, 2022