
想用shader直接畫一個這樣的,海膽形狀球的2D紋理出來(上面都是實心的刺,這里我省略畫了),但是一直沒有思路,純粹的球形簡單,但是上面的這些刺真是難倒我了。。。都怪上學時幾何沒學好,現在求個方法,給個思路也好,最好是有個原始碼參考下,別的語言的也好,囧rz
uj5u.com熱心網友回復:
所以怎么連個人都沒有呀,2333uj5u.com熱心網友回復:
只會寫程式,不會畫貼圖的說。
uj5u.com熱心網友回復:
用shader?你是想描邊吧?用shader來做摸型?會不會你想錯方向了。uj5u.com熱心網友回復:
不是,我只是想嘗試用shader直接在一個mesh上畫出圖形,算uv坐標,試著玩的,并不涉及到模型。
uj5u.com熱心網友回復:
哈哈哈,沒事,我也是之前畫了個圓以后,突然想這么試試看,加個刺上去
uj5u.com熱心網友回復:
根據UV可以計算距離中心位置的角度 然后按照角度變化 給出不同的半徑范圍,你可以使用數學公式,比如sin cos 甚至更加銳利的函式 然后后面你就懂了uj5u.com熱心網友回復:
純粹是看看解決方法,uj5u.com熱心網友回復:
不許搶美術的飯碗!uj5u.com熱心網友回復:
樓主還沒求出來嗎?給你個類似的吧 我用render monkey玩的 海膽計算量更大 我就不搞了
核心是fmod函式

sampler2D Texture0;
float subRadius;
float AnglePercent;
float Test;
float PI = 3.1415926f;
float TwoPI = 3.1415926f * 2.0f;
float4 ps_main( float2 texCoord : TEXCOORD0 ) : COLOR
{
float4 sceneColor = tex2D( Texture0, texCoord );
float4 final;
float2 DisToCenter;
DisToCenter.x = texCoord.x - 0.5f;
DisToCenter.y = texCoord.y - 0.5f;
float Dis = sqrt(DisToCenter.x*DisToCenter.x + DisToCenter.y*DisToCenter.y);
final = subRadius > Dis ? sceneColor : 1.0f;
float per = DisToCenter.x > 0? acos( -DisToCenter.y / Dis)/TwoPI * 0.99f : (TwoPI - acos( -DisToCenter.y / Dis))/TwoPI* 0.99f;
final.x = fmod(per, AnglePercent) / AnglePercent;
return final;
}
uj5u.com熱心網友回復:
學習ing.....轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/70372.html
標籤:Unity3D
上一篇:NGUI某些功能在手機上無法使用
下一篇:value.asValueMap().at("Collection").asString().c_str()沒有回傳值
