画像入力投影

これは、画像入力を使用して粒子システムに投影し、粒子の位置に応じて粒子を着色するカーネルの例です。画像はXZ平面上にあると想定され、その平面内の画像の左上隅と右下隅を設定するための2つのノブが提供されます。

結果として生じるColorWheel粒子への画像投影velocity0

 

結果として生じるColorWheel粒子への画像投影velocity0.05

画像投影カーネルのノードグラフの例

kernel ParticleImageProjectKernel : ImageComputationKernel<ePixelWise>

{

Image<eRead,eAccessRandom,eEdgeClamped> image_texture;

Image<eReadWrite> p_position;

Image<eReadWrite> p_color;

param:

float _amount;

float _dt;

float2 _imageTL;

float2 _imageBR;

local:

float2 _imageSize;

void define() {

defineParam(_imageTL, "pa_imageTL", float2(0.0f));

defineParam(_imageBR, "pa_imageBR", float2(1.0f));

defineParam(_dt, "_dt", 1.0f);

}

void init() {

_imageSize = float2(image_texture.bounds.width(), image_texture.bounds.height());

}

void process() {

float3 p = p_position();

float2 xz = float2(p.x, p.z);

float2 uv = xz = (xz-_imageTL)/(_imageBR-_imageTL);

float2 st = uv*_imageSize;

float4 c = bilinear(image_texture, st.x, st.y);

p_color() = float4(c.x, c.y, c.z, 1.0f);

}

};



 
 
 
 


Loading results