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
