繁体   English   中英

如何制作漂亮的曼德尔灯泡网格?

[英]How to make a beautiful mesh of the Mandelbulb?

我知道如何使用光线追踪渲染美丽的 Mandelbulb,就像这个一样。

但是如何得到一个漂亮的 Mandelbulb 作为 3D 网格? Mandelbulb 可以构建为等值面,我尝试使用行进立方体算法来构建此网格,但结果不是很好:

在此处输入图像描述

然而,获得漂亮的曼德尔灯泡网格是可能的: 这是一个

我也尝试了CGAL库提供的等值面提取方法,但也没有得到很好的结果。

我没有采用正确的等值面方程。 现在我用行进立方体算法得到了一个漂亮的网格:

在此处输入图像描述

double mandelbulb(double x0, double y0, double z0) {
  double x = x0;
  double y = y0;
  double z = z0;
  double r2, theta, phi, r6, r8;
  double dr = 1.0;
  for(int i = 0; i < 24; i++) {
    r2 = x * x + y * y + z * z;
    if(r2 > 4) {
      return 0.25 * sqrt(r2) * log(r2) / dr;
    }
    r6 = r2 * r2 * r2;
    dr = 8.0 * r6 * sqrt(r2) * dr + 1.0;
    theta = 8.0 * atan2(sqrt(x * x + y * y), z);
    phi = 8.0 * atan2(y, x);
    r8 = r6 * r2;
    x = r8 * cos(phi) * sin(theta) + x0;
    y = r8 * sin(phi) * sin(theta) + y0;
    z = r8 * cos(theta) + z0;
  }
  return 0.0;
}

然后在立方体[-1.2, 1.2] x [-1.2, 1.2] x [-1.2, 1.2]的网格上生成体素,并以0.005为isolevel。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM