分形/计算机图形技术/3D
外观
< 分形
- API (C++、JS...)
- 后端(渲染器后端架构)
- Linux、macOS 和 Windows 的 OpenGL 4.1+
- Android 和 iOS 的 OpenGL ES 3.0+
- macOS 和 iOS 的 Metal
- Android、Linux、macOS 和 Windows 的 Vulkan 1.0
- 所有平台的 WebGL 2.0
渲染
- 图像顺序渲染(基于 CPU 的光线追踪)
- 对象顺序渲染(基于 GPU 的渲染。更快,因为我们可以并行地对不同的顶点应用相同的指令。)
"A single frame in Toy story 4 could take anywhere between 60 to 160 hours to render using CPU based ray tracing."Brendan Galea The Math behind (most) 3D games - Perspective Projection by Brendan Galea
- 网格
- 纹理(贴图)
- 几何变换
- 管道
3D 图形与矢量图形比与光栅图形有更多共同点。图像内容被指定为几何对象的列表。该技术被称为几何建模。
渲染场景 = 创建 3D 对象/世界的 2D 图像[1]
3D 图形程序的任务是将 3D 环境的规范转换为 2D 图片。[2]
有两种方式可以生成这样的图片
- 实时渲染(交互式图形应用程序,如视频游戏或模拟)
- 非实时渲染(非交互式图形应用程序,如电影)。
使用 API 的主机程序(CPU)的编程语言
- C
- C++
特殊 API
- OpenGL
- WebGl
- Direct3D
- Vulkan
- OpenCl
- CUDA
着色器程序(GPU)的编程语言
- GLSL(OpenGl)
- HLSL(DirectX)
- Cg(NVIDIA 的着色语言)
3D 管道包含
- 硬件管道(主内存、CPU、PCI Express 总线、GPU 和 GPU 内存)
- 软件管道
软件管道
- CPU 上的主机程序(在 CPU 上运行的 3D 程序)
- GPU 上的着色器程序(3D 数据处理的大部分)
主机程序的工作包括
- 初始化
- 设置或重新配置 3D 软件管道
- 构建着色器程序
- 将着色器程序传输到 GPU
- 数据管理
- 加载 3D 数据
- 处理 3D 数据
- 更新 3D 数据
- 将 3D 数据传输到 GPU
- 向 GPU 发送命令
- 处理用户输入并更新 3D 数据
着色器程序
- 顶点着色器
- 片段着色器
- 几何着色器
每个 API 都有自己的管道
-
OpenGL 1.0 管道
-
D3D11 管道
-
D3D 10 管道
- MeshLab - 用于处理和编辑 3D 三角形网格的开源系统。
它提供了一组用于编辑、清理、修复、检查、渲染、纹理化和转换网格的工具。它提供了用于处理由 3D 数字化工具/设备生成的原始数据以及为 3D 打印准备模型的功能。
- 映射到黎曼球面的 2D 分形
对于每个像素的高度,可以使用
- 将 3D 空间中的点投影到可以展开的圆柱形表面上,到平面上[5]
视频和动画有什么区别?
用于进行转换的软件
- 分形论坛上的答案[6]
- commons 帮助
可以使用以下方法制作视频
- 在参数平面上沿着一些路径移动(例如内部和外部射线)
- 用于缩放动画的庞加莱半平面度量[7]
- 缩放 到参数平面[8][9][10] 使用自动确定最大迭代次数[11]
- 更改配色方案(例如颜色循环 - Fractint)
- 更改算法的某些参数,例如
- 逃逸时间算法的最大迭代次数
- 逃逸值[12]
- 从 c=-0.75+i 到 c=-0.75-i 的直线。它大部分位于曼德勃罗集的外部(因此,朱利亚集是分离的,没有内部)。只有一个点 c=-0.75,其中 c 属于曼德勃罗集的边界(周期 1 和 2 双曲分量的根点)。在那个点上,朱利亚集有内部(抛物线)。[13]
- 从 c=-2 到 c=1.65(曼德勃罗集的实切片)[14]
- 以 -1 为中心,半径为 0.25 的圆
- 围绕主心形[15]
- 参数沿着以 -0.29848658+0.65843271i 为中心,半径为 0.004 的圆形移动。在参数平面上,这在曼德勃罗分形的某个点周围形成了一个圆,该点以非常松散的螺旋形辐射出 11 根线。[16]
- 以 -1.57621921451761 为中心,半径为 3.6 x 10^-10 的圆形移动。在参数平面上,这在那个位置的一个迷你勃罗特周围形成了一个圆,但没有穿过迷你勃罗特本身。[17]
- ↑ David J. Eck 的《计算机图形学导论》
- ↑ 朱颖教授的《高级图形算法》
- ↑ fractalforums 上的 Duncanc Champney
- ↑ Duncan Champney 的带分数迭代值的 3D 图
- ↑ ronny restrepo 博客:激光雷达数据到 2D
- ↑ fractal 论坛上的回答
- ↑ Claude Heiland-Allen 的用于缩放动画的庞加莱半平面度量
- ↑ Bruce Dawson 的《非常深的分形缩放电影 - 速度更快》
- ↑ Tony Finch 的《制作曼德勃罗集电影》
- ↑ Daniel de Rauglaud 的 MLbrot
- ↑ 讨论:确定曼德勃罗分形任意缩放级别的最大迭代次数的方法
- ↑ jgabase 的 GIF 图片:通过动态更改逃逸值在分形上产生虫洞效果
- ↑ 视频:youtube 上 rrwick 的“朱利亚分形变形:-0.75+i 到 -0.75-i”
- ↑ youtube 上 rrwick 的视频
- ↑ youtube 上 rrwick 的视频
- ↑ youtube 上 rrwick 的视频
- ↑ youtube 上 rrwick 的视频