LoginSignup
0
1

More than 3 years have passed since last update.

[Unity] モデルの特定の場所のテクスチャの色を調べる

Last updated at Posted at 2019-11-11

モデルの特定場所の色を調べたい場合は、
・モデルにMeshColliderがついている
・Convexがoffになっている
・マテリアルに使用されているメインテクスチャがRead/Wrightableになっている
必要があります。

2019-11-12_003151.png
2019-11-12_004141.png

その状態で
Physics.Raycast()でヒットしたときに返ってくるRaycastHit.textureCoordを調べるとテクスチャの場所(uv)が返ってきます。

かなり特殊な場合になると思いますが、マテリアルにタイリングやオフセットがかかっている場合があります。

2019-11-12_004840.png

そんな時は

Vector2 ofs = m_mat.GetTextureOffset("_MainTex");
Vector2 scl = m_mat.GetTextureScale("_MainTex");
uv = Vector2.Scale(uv,scl);
uv.x = Mathf.Repeat(ofs.x + uv.x,1f);
uv.y = Mathf.Repeat(ofs.y + uv.y,1f);

でuvを補正します。

あとはメインテクスチャの指定個所の色をtex2d.GetPixelBilinear(uv.x,uv.y)で取得します。

gif_animation_004.gif

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1