void GenerateMaterial(MassAnimation.Avatar.Entities.ShapeUnity shape, GameObject go) { if (null != shape.TextureEntity) { var texName = shape.TextureEntity.ImageName; go.GetComponent <Renderer>().material = CreateNewMaterial(go.GetComponent <Renderer>().sharedMaterial, texName); } }
void GenerateGameObject(MassAnimation.Avatar.Entities.ShapeUnity shape, GameObject parent) { try { var go = (GameObject)GameObject.Instantiate(AnimatableMeshPrefab); go.hideFlags = HideFlags.HideInHierarchy | HideFlags.HideInInspector | HideFlags.NotEditable; go.transform.parent = parent.transform; GenerateMaterial(shape, go); GenerateMesh(shape, go); } catch (UnityException exp) { Debug.LogError(exp.Message); throw; } }
void GenerateMesh(MassAnimation.Avatar.Entities.ShapeUnity shape, GameObject go) { if (null != shape.GeoModel) { var indices = shape.GeoModel.Indices; var vertices = shape.GeoModel.Vertices; var mesh = new Mesh(); var mf = go.GetComponent <MeshFilter>(); mf.mesh = mesh; mesh.vertices = vertices.AllPoints.Select(p => new Vector3(p.X, p.Y, p.Z)).ToArray(); mesh.uv = shape.TexureMapping.UVs.AllPoints.Select(uv => new Vector2(uv.X, uv.Y)).ToArray(); mesh.triangles = indices.AllCoordIndices.SelectMany(idx => idx).ToArray(); mesh.RecalculateNormals(); var umfs = go.GetComponent <UpdateMeshFromShape>(); umfs.SetShape(shape); } }