Skip to content

OSL 概述 ​


OctaneRender® 支持使用开放着色语言创建高度详细的纹理。如果您对编程感兴趣,或者您是程序员,您可以使用 OSL 产生几乎无穷无尽的纹理变化。此外,OSL 不仅限于纹理创建 — 还有相机和投影选项。如果您想超越标准材质和纹理,值得花时间学习 OSL。有关更多信息,请参见标题为 开放着色语言(OSL) 的部分。

将 OSL 纹理分配给材质 ​

首先创建一个 Octane 漫反射材质并打开节点编辑器。将您创建的漫反射材质拖放到节点编辑器中。然后从节点编辑器左侧的 OSL 组中选择所需的 OSL 节点,并将其拖放到编辑器区域中。将此 OSL 节点连接到漫反射材质的"漫反射"通道。

现在,选择 OSL 纹理节点。选择节点后,转到右侧设置窗口中的"代码组"标签。此窗口允许基本编辑和部分创建操作。Otoy 在"脚本类别"中提供了一些经过验证的 OSL 脚本,在"脚本预设"部分中有分类的脚本。您还可以在脚本组下拉菜单下的参数下拉菜单中修改脚本参数。

创建和编辑 OSL ​

要执行此操作,首先按下"编辑器"按钮,如下图所示。

这将打开 Octane OSL 编辑器。您将在此编辑器中编写、编译和完成代码。

保存和分类您的 OSL 脚本 ​

您可以在编辑器窗口中保存编写的脚本或创建新类别。要执行此操作,按"保存"按钮,将弹出 Windows 资源管理器或 Mac 查找器窗口。默认情况下,插件会将您带到保存脚本的文件夹。但是,保存脚本的位置是"C:\Program Files\MAXON\ Cinema 4D [version]\plugins\ OctaneRender for Cinema 4D\ res\ osl_scripts"文件夹。在这里,您还可以打开新文件夹并将脚本保存到其中。这将创建一个新类别,您可以在 OSL 脚本窗口中看到它。

使用 OSL 时需要注意的事项 ​

OSL 脚本假设在通用环境中运行。Otoy 已努力提供与 OSL 规范版本 1.9.13 的兼容性。在该规范之外运行的 OSL 脚本可能无法可靠工作。请记住这一点。

OSL 是一种编程语言。因此,您可以编写可能导致 Octane 崩溃的代码。您有责任确保遵循良好的编码实践,并熟悉 OSL 和 Octane 上下文中允许的内容。

支持的功能

规范中的某些功能可以在 Octane 中提供,而其他功能则不能。大多数纹理基元(噪波、图像纹理和算术)将按预期工作。在 Octane 中实现的两个主要扩展是相机着色器和纹理输入的延迟求值。

不支持的功能
  • 材质着色器和 闭包 变量

  • 点云函数

  • 字典查找函数

  • 消息传递通常不受支持,但位于此 链接 下的 Octane 扩展下列出的内置函数除外。

  • 导数

  • trace ()。对于类似 AO 的效果,您可以添加 颜色 输入并将输入插针连接到污垢节点。

  • struct 变量类型。

  • 全局变量 Ps 和 dPdt

部分支持的功能
  • noise () 不支持 4D 噪波,也不支持 "simplex" 和 "gabor" 噪波类型

  • 全局变量 time 始终具有 0 到 1 之间的值,表示子帧内的时间。

  • getmessage 和 gettextureinfo 必须具有字符串字面量作为属性名称。

更多信息可在"功能和限制"主题中找到,来自 此 链接。

编译事项

选择或修改预定义预设脚本时,您可能需要按"编译"。当渲染在实时查看器中不能正确响应时,请执行此操作。

使用外部 OSL 脚本

虽然 Otoy 提供了许多经过验证可在 Octane 内运行的 OSL 脚本,但您有时会发现一些您想要尝试的 OSL 着色器示例。您可以使用这些示例,但您可能需要更改这些着色器的某些方面,以符合 Octane 中的 OSL 实现。

例如,您在下面图片中看到的一些代码是在网上找到的。当我们在 Octane OSL 编辑器中尝试使用此代码时,我们遇到"输出"错误,因为 Octane OSL 目前不允许使用多个输出。只有一个输出可用。

另一个例子是您在下面图片中看到的内容。在这里,使用"col.x"读取"col"参数的第一个组件失败。正确的用法显示在右侧。

OctaneRender® 和 OTOY® 是 OTOY Inc. 的注册商标