Skip to content

隐式曲面 (Implicit Surface)

简介

隐式曲面示例

隐式曲面(Implicit Surface)是一种通过标量场函数定义三维形态的数学曲面。与参数曲面不同,隐式曲面不通过参数映射生成点,而是通过求解方程 来确定曲面上所有点的位置。这种定义方式使得隐式曲面天生具有"体积"的概念——当多个隐式对象靠近时,它们会自然地融合在一起,形成类似液体或有机生物的形态,这正是著名的"元球"(Metaball)效果的基础。

从球体、环面到 Gyroid 三周期极小曲面,从 Chmutov 代数曲面到 Klein 瓶,隐式曲面涵盖了数学中大量优美而深刻的三维形态。本场景让你能够通过输入任意的隐式函数表达式,实时探索和渲染这些令人惊叹的数学曲面。

核心能力:

  • 自由方程输入:支持直接输入任意隐式函数 ,内置丰富的数学函数库(三角函数、指数对数、取整等)
  • 自定义参数系统:在方程中定义可调参数,通过滑块实时控制形状变化
  • 双后端渲染:CPU 和 GPU(OpenGL Compute Shader)两种 Marching Cubes 计算后端,兼顾兼容性与性能
  • 双渲染模式:PREVIEW(点云预览)和 WIREFRAME(网格渲染),适配不同工作阶段
  • 专业材质与纹理:GPU 模式下支持 Phong 光照模型、程序化纹理(棋盘格、金属、陶瓷、碳纤维)
  • 完整动画支持:集成参数振荡动画系统,支持参数的平滑周期性变化
  • 调色板系统:支持手动、余弦和曲线三种渐变模式,配合 JSON 调色板实现丰富的色彩表达

数学背景

什么是隐式曲面?

隐式曲面的核心概念是等值面(Isosurface)。给定一个三维标量场函数 ,等值面是所有满足 的点的集合,其中 是一个常数(通常取 )。

直观地说,你可以把 想象成三维空间中每个点的"密度值"或"势能值",而等值面就是所有密度值等于某个特定高度的点构成的曲面——就像地形图上的等高线一样,只不过等值面是三维的。

隐式曲面 vs 参数曲面:

特性隐式曲面参数曲面
定义方式
判断点是否在曲面上直接代入方程检验需要求解参数
融合效果天然支持(函数相加)需要额外处理
拓扑变化自然处理困难
典型应用元球、代数曲面NURBS 建模

常见隐式函数

名称公式说明
球体半径为 r 的球
椭球体半轴为 a, b, c
圆柱沿 Z 轴无限延伸
圆锥顶点在原点
环面大半径 R,小半径 r
Gyroid三周期极小曲面
Chmutov 曲面基于切比雪夫多项式

Marching Cubes 算法

本场景使用经典的 Marching Cubes 算法从隐式函数提取三角网格。该算法由 William E. Lorensen 和 Harvey E. Cline 于 1987 年在 SIGGRAPH 会议上发表,至今仍是等值面提取的标准方法。

算法原理:

  1. 空间划分:将三维采样空间划分为均匀的体素(Voxel)网格
  2. 函数求值:在每个体素的 8 个顶点处计算隐式函数值
  3. 等值面穿越判定:根据每个顶点的函数值是否大于等值 (通常为 0),确定等值面如何穿越该体素
  4. 三角面片生成:利用预计算的查找表(共 256 种情况),在每个体素内生成三角面片
  5. 顶点插值:通过线性插值确定三角面片顶点的精确位置

CPU vs GPU 后端:

特性CPU 后端GPU 后端
计算方式逐体素串行计算OpenGL Compute Shader 并行计算
兼容性所有平台需要 OpenGL 4.3+
速度低分辨率可用高分辨率显著加速
渲染模式PREVIEW + WIREFRAME仅 WIREFRAME
材质纹理不支持支持 Phong 光照 + 程序化纹理

历史背景

隐式曲面的研究可以追溯到 19 世纪的代数几何学。数学家们研究由多项式方程 定义的代数曲面,探索其拓扑性质和奇点结构。

1987 年,Lorensen 和 Cline 发明 Marching Cubes 算法后,隐式曲面在计算机图形学中获得了广泛应用。该算法使得从医学 CT/MRI 数据中提取三维器官模型成为可能,也催生了"元球"(Metaball)技术——由 Jim Blinn 于 1982 年提出,通过将多个势能函数相加来模拟有机形态的融合效果。

在数学领域,Chmutov 曲面(以俄罗斯数学家 Sergei Chmutov 命名)是一类基于切比雪夫多项式的代数曲面,具有丰富的对称性和奇点结构,是代数曲面研究中的经典对象。


界面概览

所有控制项位于右侧的属性面板(Inspector)中,分为六个主要部分:

  1. Geometry(几何):定义隐式函数 和空间变换参数
  2. Parameters(参数):定义自定义常量,用于动态控制形状
  3. Settings(设置):配置采样空间范围、分辨率、渲染后端和渲染模式
  4. Camera(相机):控制观察视角
  5. Formulas(公式):在渲染画面中显示数学公式
  6. Appearance(外观):控制背景颜色和渐变调色板

配置指南

1. Geometry(几何设置)

几何设置

隐式方程输入

f(x, y, z) 输入框中输入隐式函数表达式。曲面生成在该函数值为 0 的位置。

支持的数学函数:

类别函数
三角函数sin, cos, tan, asin, acos, atan, arcsin, arccos, arctan
双曲函数sinh, cosh, tanh
数学函数sqrt, abs, log, ln, log10, exp
取整函数floor, ceil, round, sign
其他pow, min, max, atan2

变量: 默认可用变量为 x, y, z。在 Parameters 面板中定义的参数也会自动成为可用变量。

示例方程:

  • 球体:x*x + y*y + z*z - r*r
  • 心形曲面:pow(x*x + 2.25*y*y + z*z - 1, 3) - x*x*z*z*z - 0.1125*y*y*z*z*z
  • Klein 瓶:(x*x + y*y + z*z + 2*y - 1) * ((x*x + y*y + z*z - 2*y - 1)^2 - 8*z*z) + 16*x*z*(x*x + y*y + z*z - 2*y - 1)
  • Chmutov Octic(本文示例):x^8+y^8+z^8-2*x^6-2*y^6-2*z^6+1.25*x^4+1.25*y^4+1.25*z^4-0.25*x^2-0.25*y^2-0.25*z^2+0.03125

提示:方程输入框支持语法高亮和实时验证。输入完成后按 Enter 或点击面板顶部的"应用"按钮即可更新曲面。

空间变换

参数说明默认值步长
scale_xX 轴缩放倍数1.010
scale_yY 轴缩放倍数1.010
scale_zZ 轴缩放倍数1.010
offset_xX 轴位置偏移0.010
offset_yY 轴位置偏移0.010
offset_zZ 轴位置偏移0.010

缩放和偏移在网格生成后应用,用于调整最终渲染位置和大小。在 Chmutov Octic 示例中,三个轴的缩放均设为 80,使曲面在画面中呈现合适的大小。


2. Parameters(自定义参数)

在此区域定义的自定义变量可以在 f(x, y, z) 公式中直接引用。修改参数值会实时更新曲面形状。

使用场景:

  • 定义可调节的半径:r = 1.5,然后在公式中使用 x*x + y*y + z*z - r*r
  • 创建动画参数:通过时间线动画驱动参数变化,实现形态演变
  • 控制复杂形状的特征:如环面的内外半径、Gyroid 的周期等

操作方式:

  1. 在参数名称输入框中输入参数名称(如 r, a, freq
  2. 在数值输入框中设置参数初始值
  3. 点击 "+" 按钮添加参数
  4. 在公式中引用该参数
  5. 点击参数右侧的删除按钮可移除该参数

注意:参数名称必须是有效的变量名(字母开头,可包含数字),且不能与内置变量 x, y, z 重复。


3. Settings(设置与分辨率)

设置面板

Bounds(采样范围)

参数说明默认值精度
x_min / x_maxX 轴采样范围-2 / 26 位小数
y_min / y_maxY 轴采样范围-2 / 26 位小数
z_min / z_maxZ 轴采样范围-2 / 26 位小数

重要提示: 采样范围定义了函数求值的三维方框区域。超出此范围的曲面部分会被切除。请确保范围足够大以覆盖整个曲面。

在 Chmutov Octic 示例中,由于曲面位于单位球内,采样范围设为 -1 到 1 即可完全覆盖。

Resolution(分辨率)

参数说明默认值
x_segX 轴体素数量60
y_segY 轴体素数量60
z_segZ 轴体素数量60

性能警告: 总体素数量为 。若将三个维度的分辨率都加倍,计算量会增加 8 倍。建议从低数值(如 40-60)开始调试形状,确认无误后再提高分辨率进行最终渲染。

分辨率体素数量适用场景
40 × 40 × 4064,000快速预览
60 × 60 × 60216,000常规编辑
80 × 80 × 80512,000高质量预览
100 × 100 × 1001,000,000高质量渲染
150 × 150 × 1503,375,000最终输出(需耐心等待)

Chmutov Octic 示例使用 80 × 80 × 80 的分辨率,在精度和性能之间取得了良好的平衡。

Render Backend(渲染后端)

选项说明
CPU使用 CPU 进行 Marching Cubes 计算。兼容性好,支持 PREVIEW 和 WIREFRAME 两种渲染模式
GPU使用 OpenGL Compute Shader 进行并行计算。速度快,适合高分辨率渲染,但仅支持 WIREFRAME 模式

注意: GPU 模式需要显卡支持 OpenGL 4.3+。如果遇到问题,请切换到 CPU 模式。

Render Mode(渲染模式)

模式说明适用场景
PREVIEW渲染曲面上的点云快速预览形状,调整参数(仅 CPU 后端)
WIREFRAME渲染多边形网格观察拓扑结构,最终输出

Mesh Settings(网格设置)

当渲染模式为 WIREFRAME 时,可配置以下选项:

参数说明默认值
mesh_fill是否填充网格表面开启
opacity填充透明度(0% - 100%)85%

材质属性(仅 GPU + WIREFRAME 模式):

参数说明默认值
shininess材质光泽度(0 - 100),控制高光区域的大小和强度32
ambient环境光颜色#4D4D4D
specular高光颜色#FFFFFF

Phong 光照模型:GPU 模式使用经典的 Phong 光照模型,包含环境光(Ambient)、漫反射(Diffuse)和镜面反射(Specular)三个分量。shininess 控制镜面反射的聚焦程度——值越大,高光越集中,表面看起来越光滑。

程序化纹理(仅 GPU + WIREFRAME 模式):

选项说明
None无纹理,使用纯色
Check棋盘格纹理
Metal金属纹理
Ceramic陶瓷纹理
Carbon碳纤维纹理

4. Camera(相机控制)

调整观察视角和相机参数。相机使用球坐标系定义相对于场景原点的位置和姿态。

角度参数

参数说明单位
phi俯仰角(Pitch),相机与 XY 平面的夹角。正值向上,负值向下弧度
theta方位角(Yaw),相机在 XY 平面上的旋转角度弧度
gamma滚转角(Roll),相机绕自身视线轴的旋转角度弧度

常用视角预设:

视角phitheta说明
正视图00从 Y 轴正方向观察
俯视图π/20从 Z 轴正方向观察
等轴视图π/4π/4经典 45° 等轴视角

注意: 相机参数支持数学表达式,可以使用 PIsin()cos() 等函数。例如 PI/4 表示 45 度。Chmutov Octic 示例使用 phi = PI/2(俯视图)来展示曲面的对称结构。


5. Formulas(公式显示)

在场景中显示数学公式,用于标注、教学演示或增强视觉效果。

主方程显示

参数说明默认值
show_main_equation是否显示主方程开启
x公式显示位置的 X 坐标(像素)0
y公式显示位置的 Y 坐标(像素)0
scale公式缩放比例1.0
color公式颜色(十六进制)#FFFFFF

位置说明: 坐标原点位于画布左上角,X 轴向右为正,Y 轴向下为正。

在 Chmutov Octic 示例中,主方程显示在画面上方(y = 200),缩放为 0.25,白色文字。

自定义公式

除主方程外,可以添加多个自定义公式,用于显示推导过程、辅助说明或多个相关公式。点击"添加公式"按钮创建新的公式项,每个公式项包含 LaTeX 内容、位置、缩放和颜色设置。

LaTeX 语法支持:

  • 基础运算:x^2, \frac{a}{b}, \sqrt{x}
  • 希腊字母:\alpha, \beta, \gamma, \theta, \phi
  • 特殊符号:\infty, \sum, \int, \partial
  • 矩阵:\begin{pmatrix} a & b \\ c & d \end{pmatrix}

6. Appearance(外观设置)

背景颜色

设置渲染背景的颜色。隐式曲面通常使用黑色或深色背景以突出曲面的细节和光照效果。

渐变调色板

隐式曲面使用 1D LUT(查找表)纹理进行着色,曲面颜色基于 Z 轴坐标进行渐变映射,从 z_minz_max 对应调色板的起点到终点。支持三种渐变模式:

  • Manual(手动模式)

    • 手动添加、删除和调整颜色节点
    • 支持拖拽重排颜色顺序
    • 可选择随机策略(单色、类似色、互补色、分裂互补色)
  • Cosine(余弦模式)

    • 使用 IQ 余弦调色板公式:
    • 分别控制 R/G/B 三个通道的偏移、振幅、频率和相位
    • 支持一键随机化和应用
  • Curve(曲线模式)

    • 通过可编辑的贝塞尔曲线分别控制 R/G/B 三个通道
    • 提供最灵活的颜色控制
    • 支持一键随机化和应用

Chmutov Octic 示例使用了一个包含 7 种颜色的手动调色板:从红色到紫色,呈现出丰富的色彩层次。


动画和时间线

隐式曲面支持参数振荡动画,可以通过时间线驱动自定义参数的周期性变化,实现形态演变效果。

参数振荡动画

工作原理

参数振荡动画通过 ImplicitSurfaceParameterAnimator 实现:

  1. 为每个参数指定振荡的步长(step)、范围(min, max)和边沿缓动(edge easing)
  2. 参数值在 [min, max] 范围内做正弦振荡:
  3. 振荡速度由步长和步长缩放因子(step scale)共同控制
  4. 边沿缓动确保参数接近范围边界时减速,避免突变

动画配置

在 JSON 配置文件的 timeline 中,使用 paramStartparamStop 动作控制参数动画:

json
{
  "timeline": [
    {
      "type": "animate",
      "duration": 5.0,
      "actions": [
        {
          "method": "paramStart",
          "args": {
            "parameters": {
              "r": {
                "step": 0.05,
                "min": 0.5,
                "max": 2.0
              }
            }
          }
        }
      ]
    }
  ]
}

参数动画属性

属性说明
step每帧参数变化的步长,正值表示正向变化,负值表示反向
min参数最小值
max参数最大值
enable是否启用该参数的动画(默认 true)

边缘缓动(Edge Easing)

参数动画支持边缘缓动功能,使参数在接近边界值时平滑减速,避免突兀的反弹效果:

json
{
  "edgeEasing": {
    "attackRatio": 0.3,
    "releaseRatio": 0.4,
    "easing": "SINE_OUT"
  }
}
属性说明默认值
attackRatio接近最小值时的缓动区域比例0.3
releaseRatio接近最大值时的缓动区域比例0.4
easing缓动函数类型SINE_OUT

相机动画

隐式曲面同样支持标准的相机动画:

  • 旋转:围绕曲面旋转相机
  • 对齐:将相机对齐到特定角度
  • 缩放:调整相机距离

配置方法

通过 JSON 配置文件中的 timeline 数组定义动画序列:

json
{
  "timeline": [
    {
      "type": "animate",
      "duration": 15.0,
      "easing": "SINE_IN_OUT",
      "actions": [
        {"method": "rotateTheta", "args": [6.283]}
      ]
    },
    {
      "type": "hold",
      "duration": 2.0
    }
  ]
}

Chmutov Octic 示例包含一个环境光动画(ambient)和一段等待时间,让曲面在展示时具有微妙的光照变化。


性能与最佳实践

推荐配置

目标分辨率渲染后端渲染模式预计耗时
快速预览40-60CPUPREVIEW< 1 秒
常规编辑60-80CPU 或 GPUWIREFRAME1-5 秒
高质量渲染80-120GPUWIREFRAME5-30 秒
最终输出120-150GPUWIREFRAME30 秒+

性能优化技巧

  1. 分辨率调整

    • 降低分辨率是最直接的性能优化手段
    • 总体素数 = ,三个维度都加倍则计算量增加 8 倍
    • 建议先用低分辨率确认形状正确,再逐步提高
  2. 渲染后端选择

    • CPU 后端支持 PREVIEW 模式,适合快速预览
    • GPU 后端在高分辨率下显著更快,但需要 OpenGL 4.3+ 支持
    • GPU 模式仅支持 WIREFRAME 渲染
  3. 采样范围优化

    • 缩小采样范围可以减少不必要的计算
    • 确保范围刚好覆盖曲面,避免过大的空白区域
    • 例如球体 x*x + y*y + z*z - 1 只需要 -1.5 到 1.5 的范围
  4. 内存管理

    • 高分辨率会消耗大量内存,建议在 16GB+ 内存机器上使用 150+ 分辨率
    • 如果程序崩溃,尝试降低分辨率或使用 CPU 模式

创作技巧

形状设计

  1. 从简单开始

    • 先用球体 x*x + y*y + z*z - r*r 验证设置正确
    • 确认采样范围和分辨率合理后再尝试复杂形状
  2. 融合效果

    • 隐式曲面天生支持融合,只需将多个势能函数相加
    • 示例(两个球体融合):(x*x + y*y + z*z - r1*r1) * ((x-d)*(x-d) + y*y + z*z - r2*r2) - c
    • 调整参数 c 控制融合程度
  3. 锐利边缘

    • 使用 min()max() 函数可以创建锐利的边缘
    • 示例:min(x*x + y*y + z*z - 1, x*x + y*y - 0.25) 创建球体与圆柱的交集
  4. 利用参数动画

    • 为参数设置振荡动画,观察形态的连续演变
    • 适合制作从一种形态渐变为另一种形态的动画效果

视觉调优

  1. 光照与材质

    • 使用 GPU + WIREFRAME 模式获得最佳视觉效果
    • 调整 shininess 控制高光强度——金属表面用高值(80-100),哑光表面用低值(10-30)
    • 程序化纹理可以增强真实感:金属纹理适合硬表面,陶瓷纹理适合光滑曲面
  2. 着色方案

    • 使用余弦调色板模式快速生成和谐的色彩方案
    • Z 轴渐变映射可以突出曲面的高度层次
    • 深色背景配合高饱和度色彩通常效果最佳
  3. 相机角度

    • 对于对称曲面(如 Chmutov 曲面),俯视图(phi = π/2)可以最好地展示对称性
    • 等轴视图(phi = π/4, theta = π/4)适合展示三维立体感
    • 结合相机旋转动画可以全方位展示曲面

常见问题

场景空白

可能原因:

  1. 采样范围不足:检查 x_min/maxy_min/maxz_min/max 是否覆盖了整个曲面
  2. 方程无解:确认 在给定范围内有解
    • 例如 x*x + 1 永远大于 0,无解
  3. 分辨率过低:如果曲面很薄,可能需要更高的分辨率才能捕捉到

解决方案:

  • 先扩大采样范围(如 -5 到 5)确认曲面存在
  • 逐步缩小范围以获得更好的细节

性能缓慢

可能原因:

  1. 分辨率过高
  2. 使用 CPU 模式处理高分辨率

解决方案:

  • 降低 x_segy_segz_seg
  • 切换到 GPU 模式
  • 200 × 200 × 200 的分辨率会产生 800 万个体素,计算负荷极重

形状被切断

原因: 曲面超出了采样范围

解决方案:

  • 扩大 x_min/x_max 等边界值
  • 检查缩放参数是否导致曲面超出范围

GPU 模式报错

可能原因:

  1. 显卡不支持 OpenGL 4.3+
  2. 驱动程序过旧

解决方案:

  • 更新显卡驱动
  • 使用 CPU 模式作为替代

网格出现孔洞

可能原因:

  1. 分辨率不足以捕捉细节
  2. 隐式函数存在不连续点

解决方案:

  • 提高分辨率
  • 检查函数定义,避免除零或 sqrt 负数

曲面颜色单一

原因: 调色板颜色节点不足或 Z 轴范围设置不当

解决方案:

  • 增加调色板中的颜色节点数量
  • 确认 Z 轴采样范围与曲面实际范围匹配
  • 尝试使用余弦或曲线调色板模式获得更丰富的渐变

经典隐式曲面示例

球体

f(x,y,z) = x*x + y*y + z*z - r*r
参数:r = 1.5
范围:-2 到 2,分辨率 60

环面

f(x,y,z) = (sqrt(x*x + y*y) - R)^2 + z*z - r*r
参数:R = 1.0, r = 0.4
范围:-2 到 2,分辨率 80

Gyroid(三周期极小曲面)

f(x,y,z) = sin(x)*cos(y) + sin(y)*cos(z) + sin(z)*cos(x)
范围:-PI 到 PI,分辨率 80

Chmutov Octic(本文示例)

f(x,y,z) = x^8+y^8+z^8-2*x^6-2*y^6-2*z^6+1.25*x^4+1.25*y^4+1.25*z^4-0.25*x^2-0.25*y^2-0.25*z^2+0.03125
范围:-1 到 1,分辨率 80
后端:CPU,渲染模式:WIREFRAME

Klein 瓶

f(x,y,z) = (x*x + y*y + z*z + 2*y - 1) * ((x*x + y*y + z*z - 2*y - 1)^2 - 8*z*z) + 16*x*z*(x*x + y*y + z*z - 2*y - 1)
范围:-3 到 3,分辨率 100

更多效果展示

隐式曲面示例 1隐式曲面示例 2隐式曲面示例 3


技术细节

GPU Marching Cubes 渲染管线

GPU 模式使用 OpenGL Compute Shader 实现并行 Marching Cubes 计算:

  1. 体素求值遍:在 Compute Shader 中并行计算每个体素顶点的隐式函数值
  2. 三角面片生成遍:根据函数值查找三角面片配置,并行生成所有三角面片
  3. 渲染遍:使用 Phong 光照模型渲染三角网格,支持程序化纹理

着色器编译

隐式函数在运行时编译为 GLSL 着色器代码:

  • 使用 FastExpressionParser 解析用户输入的方程表达式
  • 将解析后的表达式编译为可在 GPU 上执行的 GLSL 代码
  • 自定义参数通过 Uniform 变量传递,修改参数值不需要重新编译着色器
  • 修改方程表达式需要重新编译着色器,可能产生短暂的卡顿

参数动画机制

ImplicitSurfaceParameterAnimator 采用正弦振荡 + 边沿缓动的方案:

  1. 正弦振荡:参数值在 [min, max] 范围内做正弦振荡
  2. 步长缩放:启动时步长缩放从 0 渐增到 1,停止时从当前值渐降至 0
  3. 边沿缓动:默认配置为 attackRatio = 0.4, releaseRatio = 0.5, easing = SINE_OUT
  4. 相位同步:启动动画时,从当前参数值计算初始相位,确保平滑过渡

进阶主题

融合公式

两个隐式函数 的融合:

  • 并集
  • 交集
  • 差集
  • 平滑融合(k 控制平滑度)

理解 Chmutov 曲面

Chmutov 曲面是基于切比雪夫多项式 的代数曲面,其一般形式为:

其中 是第 n 阶切比雪夫多项式。切比雪夫多项式在数值分析中具有重要地位,它们在 [-1, 1] 区间上具有等振荡性质,这使得 Chmutov 曲面具有丰富的对称性和奇点结构。

Chmutov Octic 曲面使用 8 阶切比雪夫多项式展开后的形式,即本文示例中的方程。该曲面具有八面体对称性,呈现出复杂而优美的几何结构。

创造自定义隐式曲面

  1. 从简单的球体或椭球体开始
  2. 通过添加参数控制形状的关键特征
  3. 利用 min/max 函数组合多个基本形状
  4. 使用三角函数创建周期性结构(如 Gyroid)
  5. 通过参数动画探索参数空间中的连续变化

注意事项

  1. 方程合法性

    • 并非所有方程都能产生有效的隐式曲面
    • 某些方程在给定范围内无解,表现为空白场景
    • 避免除零(如 x/y 当 y 可能为 0)和负数开方(如 sqrt(x) 当 x 可能为负)
  2. GPU 显存

    • 高分辨率会消耗大量 GPU 显存
    • GPU 模式下,体素数据需要在显存中分配
    • 如果遇到显存不足的错误,请降低分辨率或切换到 CPU 模式
  3. 方程修改

    • 修改方程表达式需要重新编译着色器
    • 重编译期间画面会短暂卡顿,这是正常行为
    • 修改自定义参数的值不需要重编译,可以实时更新
  4. 渲染模式限制

    • GPU 后端仅支持 WIREFRAME 渲染模式
    • 如需使用 PREVIEW(点云)模式,请切换到 CPU 后端
    • 材质和纹理属性仅在 GPU + WIREFRAME 模式下可用
  5. 采样范围与分辨率的关系

    • 采样范围决定了曲面的可见区域
    • 分辨率决定了在给定范围内的精度
    • 同样的分辨率下,更大的采样范围意味着更粗的精度

参考资源

数学理论

  • Lorensen, W.E. & Cline, H.E. - Marching Cubes: A High Resolution 3D Surface Construction Algorithm (SIGGRAPH 1987)
  • Bloomenthal, J. - Polygonization of Implicit Surfaces (Computer-Aided Geometric Design, 1988)
  • Hart, J.C. - Ray Tracing Implicit Surfaces (SIGGRAPH Course Notes, 1993)

在线资源

软件文档

  • OpenGL Compute Shader 编程指南
  • GLSL 语言规范

All rights reserved.