VEX —— Functions|Sampling

目录

create_cdf —— 根据PDF值创建CDF

create_pdf —— 根据输入的数组值创建PDF

sample_cdf —— 采样CDF

limit_sample_space —— 限制单位值

newsample —— 对nextsample函数初始化采样序列

nextsample 

sample_geometry —— 采样几何体并返回shader信息

sample_light —— 采样灯光并运行light shader

sample_photon —— 采样灯光并运行light shader


sample_cauchy —— 采样Cauchy分布

sample_discrete —— 采样整数值

sample_exponential —— 采样指数分布

sample_lognormal —— 采样log-normal分布

sample_lognormal_by_median —— 采样log-normal分布

sample_normal —— 采样normal分布

sampledisk 

variance —— 计算平均值和方差


sample_circle_arc —— 生成统一的单位vector2

sample_circle_edge_uniform —— 生成统一的单位vector2

​编辑

sample_circle_ring_uniform —— 生成统一的单位vector2

sample_circle_slice —— 生成统一的单位vector2

sample_circle_unifom —— 生成统一的单位vector2

sample_hemisphere —— 生成半球形单位vector

sample_sphere_cone —— 生成单位vector

sample_sphere_uniform —— 生成单位vector

sample_sphere_shell_uniform —— 生成单位vector

sample_hypersphere_cone —— 生成统一的vector4

sample_hypersphere_uniform —— 生成统一的vector4

sample_orientation_cone —— 生成统一的vector4

sample_orientation_uniform —— 生成统一的vector4


create_cdf —— 根据PDF值创建CDF

float [] create_cdf(float pdf[])

create_pdf —— 根据输入的数组值创建PDF

float [] create_pdf(float values[])

sample_cdf —— 采样CDF

int sample_cdf(float cdf[], float uniform_rand)
void sample_cdf(float cdf[], float uniform_rand, int &index, float &x)
void sample_cdf(float cdf[], float uniform_rand, int &index, float &x, float &pdf)

limit_sample_space —— 限制单位值

float limit_sample_space(float minu, float maxu, float u)
float limit_sample_space(float maxu, float u)

newsample —— 对nextsample函数初始化采样序列

int newsampler(...)
int newsampler(int seed, ...)

nextsample 

void nextsample(int &sid, float &sx, float &sy, ...)
void nextsample(int &sid, vector &svec, ...)

sample_geometry —— 采样几何体并返回shader信息

int sample_geometry(vector origin, vector sample, float time, ...)

sample_light —— 采样灯光并运行light shader

int sample_light(int lightid, vector pos, vector sam, float time, vector &pos, vector &clr, float &scale, ...)

sample_photon —— 采样灯光并运行light shader

int sample_photon(light lp, vector &pos, vector &dir, float &scale, float time)

sample_cauchy —— 采样Cauchy分布

float  sample_cauchy(float u)
float  sample_cauchy(float scale, float u)
vector2  sample_cauchy(float scale, vector2 u)
float  sample_cauchy(float origscale, float minvalue, float maxvalue, float u)
 sample_cauchy(

sample_discrete —— 采样整数值

int sample_discrete(int nvalues, float u)
int sample_discrete(float weights[], float u)
  • nvalues,返回值范围[0nvalues-1],如u为0返回0,u为1返回nvalues-1;
  • weights,返回值范围[0len(weights)-1],相对权重总和不必为1;

sample_exponential —— 采样指数分布

float sample_exponential(float u)
float sample_exponential(float mean, float u)
float sample_exponential(float origmean, float maxvalue, float u)
  • 返回值随u单向递增;

sample_lognormal —— 采样log-normal分布

float sample_lognormal(float mu, float sigma, float u)
float sample_lognormal(float mu, float sigma, float minvalue, float maxvalue, float u)

sample_lognormal_by_median —— 采样log-normal分布

float sample_lognormal_by_median(float median, float stddev, float u)
float sample_lognormal_by_median(float origmedian, float origstddev, float minvalue, float maxvalue, float u)

sample_normal —— 采样normal分布

float sample_normal(float u)
float sample_normal(float mean, float stddev, float u)
float sample_normal(float origmean, float origstddev, float minvalue, float maxvalue, float u)
vector2 sample_normal(vector2 u)
vector sample_normal(vector u)
vector4 sample_normal(vector4 u)

sampledisk 

void sampledisk(float &x, float &y, float sx, float sy)

variance —— 计算平均值和方差

float variance(float variable, float &mean, int &sample_size)

sample_circle_arc —— 生成统一的单位vector2

vector2 sample_circle_arc(vector2 center, float maxangle, float u)
//生成单位圆弧
float u = fit(@ptnum, 0, @numpt, 0, 1);
vector2 ret = sample_circle_arc({0,1}, radians(60), u);

VEX —— Functions|Sampling_第1张图片

sample_circle_edge_uniform —— 生成统一的单位vector2

vector2 sample_circle_edge_uniform(float u)
  • 返回值对应坐标(cos(angle),sin(angle)),对应的角度2*pi*u
//生成圆环
float u = fit(@ptnum, 0, @numpt, 0, 1);
vector2 ret = sample_circle_edge_uniform(u);

VEX —— Functions|Sampling_第2张图片

sample_circle_ring_uniform —— 生成统一的单位vector2

​vector2 sample_circle_ring_uniform(vector2 u, float alpha)
  • 返回值对应坐标scale*(cos(angle),sin(angle)),对应的角度2*pi*u.x,对应scale值sqrt((1-alpha^2)*u.y+alpha^2)
vector2 u;
u.x = fit(@ptnum, 0, @numpt, 0, 1); 
u.y = fit(@ptnum, 0, @numpt, 0, 1); 
vector2 ret = sample_circle_ring_uniform(u, 0);

VEX —— Functions|Sampling_第3张图片

sample_circle_slice —— 生成统一的单位vector2

vector2 sample_circle_slice(vector2 center, float maxangle, vector2 u)

vector2 u;
u.x = fit(@ptnum, 0, @numpt, 0, 1); 
u.y = fit(@ptnum, 0, @numpt, 0, 1); 
vector2 ret = sample_circle_slice({0,1}, radians(180), u);

VEX —— Functions|Sampling_第4张图片

sample_circle_unifom —— 生成统一的单位vector2

vector2 sample_circle_uniform(vector2 u)
vector2 u;
u.x = fit(@ptnum, 0, @numpt, 0, 1); 
u.y = fit(@ptnum, 0, @numpt, 0, 1); 
vector2 ret = sample_circle_uniform(u);

VEX —— Functions|Sampling_第5张图片

sample_hemisphere —— 生成半球形单位vector

vector sample_hemisphere(vector2 u)
vector sample_hemisphere(vector center, vector2 u)
vector sample_hemisphere(float bias, vector2 u)
vector sample_hemisphere(vector center, float bias, vector2 u)
  • center,中心方向,不必标准化,如不指定默认为{1,0,0};
  • bias,中心方向偏移,值范围(-1,无限大),-1表示强制垂直,0,没有偏移,无限大强制中心方向;
vector2 u = rand(@ptnum+0.5);
vector ret = sample_hemisphere(u);

VEX —— Functions|Sampling_第6张图片

sample_sphere_cone —— 生成单位vector

vector sample_sphere_cone(vector center, float maxangle, vector u)
vector u = rand(@ptnum);
vector ret = sample_sphere_cone({1,0,0}, radians(180), u);

VEX —— Functions|Sampling_第7张图片

sample_sphere_uniform —— 生成单位vector

vector sample_sphere_uniform(vector u)
vector u = rand(@ptnum);
vector ret = sample_sphere_uniform(u);

VEX —— Functions|Sampling_第8张图片

sample_sphere_shell_uniform —— 生成单位vector

vector sample_sphere_shell_uniform(vector u, float alpha)
//当alpha为1时,ret长度都为1
vector u = rand(@ptnum);
vector ret = sample_sphere_shell_uniform(u, 1);

VEX —— Functions|Sampling_第9张图片

sample_hypersphere_cone —— 生成统一的vector4

vector4 sample_hypersphere_cone(vector4 center, float maxangle, vector4 u)
  • center,圆锥中心方向,不必标准化;
  • maxangle,最大角度,单位弧度;

sample_hypersphere_uniform —— 生成统一的vector4

vector4 sample_hypersphere_uniform(vector4 u)

sample_orientation_cone —— 生成统一的vector4

vector4 sample_orientation_cone(vector4 center, float maxangle, vector u)

sample_orientation_uniform —— 生成统一的vector4

vector4 sample_orientation_uniform(vector u)

你可能感兴趣的:(#,VEX,Houdini)