Houdini SDF/Raymarching/等高曲面绘制
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/等高曲面绘制的更多相关文章
- 7.5.5编程实例-Bezier曲线曲面绘制
(a)Bezier曲线 (b) Bezier曲面 1. 绘制Bezier曲线 #include <GL/glut.h> GLfloat ct ...
- 图片不清晰?Graphics 高质量绘制
Graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; Graphics ...
- [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, ...
- 用OpenGL进行曲线、曲面的绘制
实验目的 理解Bezier曲线.曲面绘制的基本原理:理解OpenGL中一维.二维插值求值器的用法. 掌握OpenGL中曲线.曲面绘图的方法,对比不同参数下的绘图效果差异: 代码1:用四个控制点绘制一条 ...
- Houdini技术体系 基础管线(四) :Houdini驱动的UE4植被系统 下篇
背景 在上篇中,实现了使用Houdini在UE4里根据地形过程生成植被的最基本的原型.并且支持把植被在UE4里Bake成使用的HierarchicalInstancedStaticMeshCompon ...
- matlab绘制三维图形
原文地址:种三维曲面图. 程序如下: [x,y]=meshgrid(-8:0.5:8); z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2+eps); subplot(2, ...
- MATLAB曲线绘制
一. 二维数据曲线图1.1 绘制 单根二维曲线plot 函数的基本调用 格式为:plot(x,y) 其中x和y为长度相同的向量,分别用于存储x坐标 和y坐标数据. 例1-1 在0≤x≤2p区间内,绘制 ...
- [转帖]MATLAB曲线绘制及颜色类型
信号源产生的方法 来源:http://www.2cto.com/kf/201401/270494.html matlab的checkerboard说明,GOOD! 来源:http://www.chi ...
- Android高效率编码-第三方SDK详解系列(一)——百度地图,绘制,覆盖物,导航,定位,细腻分解!
Android高效率编码-第三方SDK详解系列(一)--百度地图,绘制,覆盖物,导航,定位,细腻分解! 这是一个系列,但是我也不确定具体会更新多少期,最近很忙,主要还是效率的问题,所以一些有效的东西还 ...
随机推荐
- koa-router 源码由浅入深的分析(7.4.0版本的)
首先简单的介绍下什么koa-router,为什么要使用它,可以简单看下上一篇文章. 了解koa-router 首先我们来看下koa-router的源码的基本结构如下,它是由两部分组成的: ------ ...
- Hive中知识点
hive的最新学习资料:http://www.cnblogs.com/qingyunzong/p/8707885.html hive的参数设置大全:https://cwiki.apache.org/c ...
- Sklearn中的回归和分类算法
一.sklearn中自带的回归算法 1. 算法 来自:https://my.oschina.net/kilosnow/blog/1619605 另外,skilearn中自带保存模型的方法,可以把训练完 ...
- 深入理解Fabric环境搭建的详细过程
博主之前的文章都是教大家怎么快速的搭建一个Fabric的环境,但是其中大量的工作都隐藏到了官方的脚本中,并不方便大家深入理解其中的过程,所以博主这里就将其中的过程一步步分解,方便大家! 前面的准备工作 ...
- 2-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(监听Wi-Fi和APP的数据)
1-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(来看一下怎么样监听网络数据,监听电脑上位机软件的数据) 因为那个软件只能监听咱自己电脑上的数据,所以咱就用电 ...
- Linux 修改本地时间 (centos为例)
1. tzselect [root@xxxx etc]# tzselect --- 选择时区命令 Please identify a location so that time zone rules ...
- 599. Minimum Index Sum of Two Lists(easy)
Suppose Andy and Doris want to choose a restaurant for dinner, and they both have a list of favorite ...
- C语言之控制语言:分支和跳转
if语句 #include<stdio.h> int main(void) { const int FREEZING = 0; float temperature; int cold_da ...
- 软件工程(GZSD2015) 第二次作业成绩
作业评分表 姓名 提交 语言 界面 PSP(3) CODE(4) 代码规范(2) 改进(1) 基本得分 提交时间 原始总得分 相对得分 最终得分 涂江凤 20150407 C CLI 3 4 2 1 ...
- flex知识点归纳
1.flex-shrink <div id="content"> <div class="box" style="backgroun ...