主なコンテンツ

〜主なコンテンツ〜

1. Unityで製作したゲームと製作Tips
  1. 三月精チャレンジ(東方Project二次創作)
    1. 作り方
  2. 英語学習2D(オリジナルスマホアプリ)
2. UE4
3. ゲームアプリ見学
4. Bitbucket & SourceTreeでの一連の流れ
  1. 前半
  2. 後半
5. Tips
  1. UnityのTips
  5. SQL文のTips
  6. Final IK
  7. GearVR+Unity

2017年4月10日月曜日

Meshの変形

下記を参考に、変形できるMeshについて試してみた
  • Unityで動的にメッシュを生成するだいたい最小のコード(サイト
  • 2Dメッシュでレーダーチャートを作図する (サイト

■ソース
using UnityEngine;
using System.Collections.Generic;
[RequireComponent(typeof(MeshRenderer))]
[RequireComponent(typeof(MeshFilter))]
public class DynamicCreateMesh : MonoBehaviour
{
// 変更箇所 : Materialを保持するようにする
[SerializeField]
private Material _mat;
private Mesh _mesh;
private MeshFilter _filter;
private List<GameObject> _points = new List<GameObject>();
//
private void Start()
{
//頂点の設定
_mesh = new Mesh();
_mesh.vertices = new Vector3[] {
new Vector3 (0, 1f),
new Vector3 (1f, -1f),
new Vector3 (-1f, -1f),
};
_mesh.triangles = new int[] {
0, 1, 2
};
//
foreach (var pos in _mesh.vertices)
{
Debug.Log(pos);
GameObject obj = new GameObject("point");
obj.transform.SetParent(transform);
obj.transform.localPosition = pos;
_points.Add(obj);
}
// 修正箇所 : 各頂点に対してUV座標を設定しています
_mesh.uv = new Vector2[] {
new Vector2 (0.5f, 1f),
new Vector2 (1f, 0),
new Vector2 (0, 0),
};
_filter = GetComponent<MeshFilter>();
_filter.sharedMesh = _mesh;
// 変更箇所 : MeshRendererからMaterialにアクセスし、Materialをセットするようにする
var renderer = GetComponent<MeshRenderer>();
renderer.material = _mat;
}
//
void Update()
{
int len = _filter.sharedMesh.vertices.Length;
Vector3[] vec3 = new Vector3[len];
for (int i = 0 ; i < len; i++)
{
vec3[i] = _points[i].transform.localPosition;
}
_mesh.vertices = vec3;
_mesh.RecalculateNormals();
_mesh.RecalculateBounds();
_filter.sharedMesh = _mesh;
}
}


0 件のコメント:

コメントを投稿