1 , SDF

<1> union  min(a,b)

<2> intersect: max(a,b)

<3> Substract  a-b  :

if(b> -a){

return b;

}

return -a;

2, 2d Plane SDF:

float planeSDF(float x;float y;float px;float py; float nx; float ny)
{
return (x - px ) * nx + (y-py) *ny;
} // box ramp to 0-1
vector min;
vector max;
getbbox(,min,max);
vector rpos = fit(@P, min ,max , set(,,) , set(,,) );
rpos.y = - rpos.y; @Cd = planeSDF(
rpos.x , rpos.y ,
0.0f, 0.5f,
0.0f ,1.0f);

X和Y SDF平面切换比较简单:

/* X SDF Plane   */
@Cd = planeSDF(
rpos.x , rpos.y ,
0.5f, 0.0f,
1.0f ,0.0f); /* Y SDF Plane */
@Cd = planeSDF(
rpos.x , rpos.y ,
0.0f, 0.5f,
0.0f ,1.0f);

Houdini渲染一个: Raymarching 2d

Qt Framework:

 2,极坐标2d

1,心:

2:阿基米德螺线

3,复数下的极坐标以及对图像产生的影响

这里的复数定义: Z = x + yi ;

Houdini里扔一个图:

>> , z^2

float ex(float r; float theta)
{
return cos(theta) * r;
}
float ey(float r; float theta)
{
return sin(theta) * r;
} // Z = x + yi;
// Z*Z = (x^2 - y^2) + (2xy)*i; float real = @P.x* @P.x - @P.y*@P.y;
float img = * @P.x * @P.y;
float r = sqrt(real * real + img*img);
float theta = atan2(img,real); @P.x = ex(r , theta);
@P.y = ey(r , theta);

>> Z -> -1/Z

float ex(float r; float theta)
{
return cos(theta) * r;
}
float ey(float r; float theta)
{
return sin(theta) * r;
} // Z = x + yi;
// -1/z = -(x/(x^2+y^2)) + y/(x^2+y^2)i float real = -(@P.x/(@P.x*@P.x + @P.y*@P.y)) ;
float img = @P.y/(@P.x*@P.x + @P.y*@P.y) ;
float r = sqrt(real * real + img*img);
float theta = atan2(img,real); @P.x = ex(r , theta);
@P.y = ey(r , theta);

e^z

Houdini如何画参数方程:

比如:r(t) = (1/t) i + sin(t) j

由于t 不能等于0:

float rmp = float(@ptnum) / float(@numpt-) + 0.000001;
rmp = rmp*;
@P.x = 1.0/rmp;
@P.y = sin(rmp);

 Houdini ISO Surface:画等高面的利器:

使用输入的值,volumevop里随便创建了半径为r = 0.4的SDF球:

则形成的iossurface是:

implicit function for isosurface: Houdini默认给的这个。这个是个半径为1的球。 这其实是一个 三元函数的一个等高面.

$X*$X + $Y*$Y + $Z*$Z - 

半径为5的圆柱则是: x^2 + y^2 = 5 (注意些Houdini由于y是向上,y和z要调换顺序)

$X*$X + $Z*$Z -

x^2+y^2 = z (注意些Houdini由于y是向上,y和z要调换顺序)

$X*$X + $Z*$Z -$Y

如果f(x,y) = 100 - x^2 - y^2

虽说是f(x,y)二元函数,但由于x,y ->对应一个z,画出来是个R^3空间的 三维曲面 ,所以f(x,y) = Z,

在houdini里要写 :

 - $X*$X - $Z*$Z - $Y

画双曲面:

z^2 - x^2 - y^2 = 1(注意些Houdini由于y是向上,y和z要调换顺序)

$Y*$Y - $X*$X - $Z*$Z - 

|x| + |y| 的等高线:

float grad = (abs(@P.x) + abs(@P.z));
@Cd = grad % ;

pow()之后:

float grad = (abs(@P.x) + abs(@P.z));
@Cd = pow(grad,) % ;

参考:

1,高等数学(同济大学),托马斯微积分

2,https://zhuanlan.zhihu.com/milocode

3,https://www.youtube.com/watch?v=MRuhHGYUJSI

Houdini SDF/Raymarching/等高曲面绘制的更多相关文章

  1. 7.5.5编程实例-Bezier曲线曲面绘制

    (a)Bezier曲线                         (b) Bezier曲面 1. 绘制Bezier曲线 #include <GL/glut.h> GLfloat ct ...

  2. 图片不清晰?Graphics 高质量绘制

    Graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; Graphics ...

  3. [Matlab]三维曲面绘制实例

    [x,y] = meshgrid(-8:0.5:8); z = sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2+eps); subplot(2,2,1); mesh(x,y, ...

  4. 用OpenGL进行曲线、曲面的绘制

    实验目的 理解Bezier曲线.曲面绘制的基本原理:理解OpenGL中一维.二维插值求值器的用法. 掌握OpenGL中曲线.曲面绘图的方法,对比不同参数下的绘图效果差异: 代码1:用四个控制点绘制一条 ...

  5. Houdini技术体系 基础管线(四) :Houdini驱动的UE4植被系统 下篇

    背景 在上篇中,实现了使用Houdini在UE4里根据地形过程生成植被的最基本的原型.并且支持把植被在UE4里Bake成使用的HierarchicalInstancedStaticMeshCompon ...

  6. matlab绘制三维图形

    原文地址:种三维曲面图. 程序如下: [x,y]=meshgrid(-8:0.5:8); z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2+eps); subplot(2, ...

  7. MATLAB曲线绘制

    一. 二维数据曲线图1.1 绘制 单根二维曲线plot 函数的基本调用 格式为:plot(x,y) 其中x和y为长度相同的向量,分别用于存储x坐标 和y坐标数据. 例1-1 在0≤x≤2p区间内,绘制 ...

  8. [转帖]MATLAB曲线绘制及颜色类型

    信号源产生的方法 来源:http://www.2cto.com/kf/201401/270494.html  matlab的checkerboard说明,GOOD! 来源:http://www.chi ...

  9. Android高效率编码-第三方SDK详解系列(一)——百度地图,绘制,覆盖物,导航,定位,细腻分解!

    Android高效率编码-第三方SDK详解系列(一)--百度地图,绘制,覆盖物,导航,定位,细腻分解! 这是一个系列,但是我也不确定具体会更新多少期,最近很忙,主要还是效率的问题,所以一些有效的东西还 ...

随机推荐

  1. SpringMVC处理请求和返回流程

    流程描述:一个url请求,找打指定的requestMapping再返回指定的jsp界面 通过url拿到指定的java方法 HandlerExecutionChain  mappedHandler = ...

  2. redis 初步认识四(redis锁,防并发)

    using System; namespace ConsoleAppRedis { class Program { static void Main(string[] args) { //第一种,无登 ...

  3. Mysql_连接字符串

    1.本地数据库连接 <connectionStrings> <add name="ConnectionString" connectionString=" ...

  4. iOS WebView 加载本地资源(图片,文件等)

    https://www.cnblogs.com/dhui69/p/5596917.html iOS WebView 加载本地资源(图片,文件等) NSString *path = [[NSBundle ...

  5. 【转】Python爬虫:抓取新浪新闻数据

    案例一 抓取对象: 新浪国内新闻(http://news.sina.com.cn/china/),该列表中的标题名称.时间.链接. 完整代码: from bs4 import BeautifulSou ...

  6. winform,同个程序只允许启动一次

    static class Program { [DllImport("User32.dll")] private static extern bool ShowWindowAsyn ...

  7. Shell命令-文件及内容处理之sort、uniq

    文件及内容处理 - sort.unip 1. sort:对文件的文本内容排序 sort命令的功能说明 sort 命令用于将文本文件内容加以排序.sort 可针对文本文件的内容,以行为单位来排序. so ...

  8. Announcing Microsoft Research Open Data – Datasets by Microsoft Research now available in the cloud

    The Microsoft Research Outreach team has worked extensively with the external research community to ...

  9. mpvue——页面跳转

    两个页面 两个页面的跳转,只是单纯的A->B这种跳转. 组件 直接使用小程序的组件,navigator,里面还有一些其他的参数,大家可以自行翻阅官方文档 <navigator url=&q ...

  10. 题解:[APIO/CTSC 2007]数据备份

    你在一家 IT 公司为大型写字楼或办公楼(offices)的计算机数据做备份.然而数据备份的工作是枯燥乏味的,因此你想设计一个系统让不同的办公楼彼此之间互相备份,而你则坐在家中尽享计算机游戏的乐趣.已 ...