Skip to content

Vectron


Vectron™(矢量-多边形)是 OctaneRender®
的过程式超级基元,提供无限的过程式生成的场景、体积和几何体,无需使用网格或体积。Vectron 对象具有零内存占用,与在 CPU 上生成的网格或体积相比,提供更高的效率。这使得 Vectron 能够在 GPU
上提供过程式生成的无三角形几何场景,而无需使用显存。Vectron 与 OctaneRender 内置的 OSL(开放着色语言)支持和 OSL 纹理着色器配合使用。

OctaneRender for Cinema 4D 插件中对 Vectron 的支持是有限的,在以下部分中进行说明。要访问完整的 Vectron 功能集,请使用 Octane Standalone。

#### 创建 Vectron 对象

Vectron 对象中提供了许多预设,可从 Live Viewer > 对象 > Vectron 访问。Vectron 对象由 OSL
脚本生成。您可以在脚本组的编辑字段中查看和编辑给定脚本,或者可以选择加载外部脚本(在这种情况下,Vectron 对象的代码将不可见)。直接访问脚本允许根据需要修改。

在 Cinema 4D 对象管理器中选择 Vectron 对象,然后在属性管理器中选择代码组选项卡:

Vectron 对象

Vectron 方程的实际绘制只会在 Live Viewer 中或渲染时发生,因为 Vectron 对象中没有多边形可在 Cinema 4D
视口中绘制。相反,会绘制一个边界框(其大小可从代码选项卡中的对象参数组控制),以及边界中心的一个(通常很小的)球体。定义为超出边界的任何 Vectron 对象部分将被裁剪且不会绘制。

大多数 Vectron 脚本生成很快 — Live Viewer 非常适合使用 Vectron 脚本,因为反馈实际上是即时的。如果脚本未立即在 Live Viewer
中显示,请调整脚本参数组中的值。脚本参数组中的滑块可能会很挑剔,因为边界太大。在这种情况下,通过将脚本中的 float slidermax 值编辑为
10 来限制滑块的范围,然后根据需要调整。

关于从 Octane Standalone 直接加载的脚本的说明: 为 Standalone 编写的脚本单位是米。粘贴到 OctaneRender for Cinema 4D 版本的 Vectron 时,您可能需要将任何缩放值显著调整 100 倍。布尔运算等功能在插件中不可用,并且不会出现在加载到 OctaneRender for Cinema 4D 插件的 Vectron 脚本中。如果可能,最好使用预设菜单中的脚本,因为这些脚本已经转换为用于 OctaneRender for Cinema 4D 插件。

新的 Vectron 对象有一个包含以下代码行的 OSL 脚本:

此脚本创建一个简单的球体。进行一点额外的编码,如下图中所示,您将得到以下结果:

您可以下载上图中 Vectron 节点的示例以在此处查看其运行情况:VectronSphere.orbx
您也可以在此处下载 Vectron 示例集合:Fun_With_Vectron (4).orbx

#### 使用 Vectron 进行布尔运算

Vectron 可以对 Vectron SDF 基元执行布尔运算。要访问 Vectron 布尔运算,请转到 Live Viewer > 对象 > Vectron
运算符,然后从菜单列表中选择所需的运算。这将在 Cinema 4D 对象管理器中添加一个 VectronOp 对象。

vectron 运算符

Vectron 布尔运算符菜单

接下来,加载两个 SDF 基元作为操作数,并将其父级设置为 VectronOp 节点。

对象管理器中的 vectron op

对象管理器中的 VectronOp 和 SDF 基元操作数

要查看 VectronOp 的结果,您需要使用 Live Viewer 或使用 Octane 渲染场景,因为这是一个仅渲染时效果。线框绘制在 Cinema 4D 3D 视图中执行,但这只是一个近似值。

注意 Vectron® 布尔运算仅限于两个操作数 — Cinema 4D 对象管理器将允许无限数量的子对象附加到 VectronOp 对象,但 Vectron 不会处理超过两个操作数。

<h5>VectronOp</h5>

VectronOp 对象包含以下选项来管理生成的布尔运算:

VectronOp

    - (运算)类型 —  此菜单包含 Vectron 支持的以下布尔运算列表:

      - 并集 — 将两个操作数合并为一个对象

      - 相减 — 从第一个操作数中减去第二个操作数

      - 相交 — 只保留两个操作数彼此共享的部分

      - 偏移 — 将第一个操作数的所有面扩展或收缩到边界指定的范围(在这种情况下,第二个操作数被忽略)。

      - 内嵌 — 创建第一个操作数的内嵌,由第二个操作数显示。两个操作数之间的混合由半径属性控制。使用此运算可以创建许多不寻常的形状。

      - 墨水 — 将在两个操作数相交的位置创建形状,但保留第一个操作数在原位。

      - 裁剪 — 此运算将移除裁剪平面后面的操作数的任何部分。

    - 半径 — 布尔运算将只考虑指定半径内的项目,并且可以在两个形状和材质之间混合,值大于 0。

    - 边界 — 布尔运算领域的总体边界。这些边界之外的任何内容都不会被绘制或生成。

    - 传输材质 — 此切换启用操作数之间的材质传输(将材质从第二个操作数传输到布尔运算产生的公共部分)。

使用 半径 在两个操作数之间混合 半径 0 CM 半径 55 CM

重要 如果渲染结果中操作数的部分缺失,请增加边界的大小 — 超出指定边界的对象或对象部分会被布尔运算裁剪。

<h5>Vectron 操作数</h5>

任何父级设置为 VectronOp 的 Vectron SDF 对象都成为操作数。最多支持两个操作数(如果存在更多操作数,结果可能不可预测)。从 对象类型
菜单中选择操作数的形状。根据对象菜单中选择的对象类型,将出现不同的选项。第一组选项确定操作数的体积和大小(某些对象具有圆角基座和/或圆角选项,这将按指定的量使操作数球化)。填充选项确定操作数是实心的(1.0),还是具有厚度的空心。布尔运算将根据对象及其参数产生不同的结果。

运算符 部分指回 VectronOp,半径参数与 VectronOp 半径参数相同。请注意,此设置可能会干扰 VectronOp
类型,应保留为默认设置以确保可预测的操作。此项目可能在未来的迭代中被移除。

vectron 操作数

Vectron 操作数

#### Vectron 布尔运算

一些可用的 Vectron 布尔运算

上面是从 Menger 立方体中减去 SDF 球体的示例。

来自 shadertoy.com 的示例被输入到 OSL vectron 几何节点中。此示例是从 Octane Standalone 脚本复制并粘贴到 Cinema 4D 中的 Vectron
对象。

#### Vectron 脚本

Vectron 对象包含几个预设脚本:

    - fractal1.txt

    - glsl_type.h

    - mandelbulb.txt

    - mandelbulb2.osl

    - mandelbub_clay_test

    - menger_sponge_boolean_extract.txt

    - metaball1.txt

    - primitives.txt

    - QuaternionJulia.osl

    - sdf_to_vectron_surface_displacement.txt

    - sphere.osl

    - sphereWithtexture.txt — 此脚本使用噪声纹理输入。请确保添加投影节点并将投影设置为 UVW 到
        XYZ

    - sponge.txt

    - temporal_mandelbuld.txt —
      为了查看此脚本的结果,请调整位于对象参数组中的边界值。需要较大的值。

    - Vectron Procedural Waves (slow).txt — 生成带有波浪纹理的平面。

    - vectron_fur_fast.txt

    - vectron_fur_with_motion_blur.txt

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