Quantcast
Channel: Questions in topic: "skinned mesh renderer"
Viewing all articles
Browse latest Browse all 192

Mesh.bindposes official sample not working

$
0
0
Hi, I just copy and paste Mesh.bindposes official sample into unity 5.30, adjust the camera position and run. The quad is static and no any animation. Do you know what's wrong? Document: http://docs.unity3d.com/ScriptReference/Mesh-bindposes.html My code: using UnityEngine; using System.Collections; //[ExecuteInEditMode] public class Test : MonoBehaviour { // Use this for initialization void Start () { gameObject.AddComponent(); gameObject.AddComponent(); SkinnedMeshRenderer rend = GetComponent(); Animation anim = GetComponent(); // Build basic mesh Mesh mesh = new Mesh(); mesh.vertices = new Vector3[] { new Vector3(-1, 0, 0), new Vector3(1, 0, 0), new Vector3(-1, 5, 0), new Vector3(1, 5, 0) }; mesh.uv = new Vector2[] { new Vector2(0, 0), new Vector2(1, 0), new Vector2(0, 1), new Vector2(1, 1) }; mesh.triangles = new int[] { 0, 1, 2, 1, 3, 2 }; mesh.RecalculateNormals(); rend.material = new Material(Shader.Find("Diffuse")); // assign bone weights to mesh BoneWeight[] weights = new BoneWeight[4]; weights[0].boneIndex0 = 0; weights[0].weight0 = 1; weights[1].boneIndex0 = 0; weights[1].weight0 = 1; weights[2].boneIndex0 = 1; weights[2].weight0 = 1; weights[3].boneIndex0 = 1; weights[3].weight0 = 1; mesh.boneWeights = weights; // Create Bone Transforms and Bind poses // One bone at the bottom and one at the top Transform[] bones = new Transform[2]; Matrix4x4[] bindPoses = new Matrix4x4[2]; bones[0] = new GameObject("Lower").transform; bones[0].parent = transform; // Set the position relative to the parent bones[0].localRotation = Quaternion.identity; bones[0].localPosition = Vector3.zero; // The bind pose is bone's inverse transformation matrix // In this case the matrix we also make this matrix relative to the root // So that we can move the root game object around freely bindPoses[0] = bones[0].worldToLocalMatrix * transform.localToWorldMatrix; bones[1] = new GameObject("Upper").transform; bones[1].parent = transform; // Set the position relative to the parent bones[1].localRotation = Quaternion.identity; bones[1].localPosition = new Vector3(0, 5, 0); // The bind pose is bone's inverse transformation matrix // In this case the matrix we also make this matrix relative to the root // So that we can move the root game object around freely bindPoses[1] = bones[1].worldToLocalMatrix * transform.localToWorldMatrix; mesh.bindposes = bindPoses; // Assign bones and bind poses rend.bones = bones; rend.sharedMesh = mesh; // Assign a simple waving animation to the bottom bone AnimationCurve curve = new AnimationCurve(); curve.keys = new Keyframe[] { new Keyframe(0, 0, 0, 0), new Keyframe(1, 10, 0, 0), new Keyframe(2, 0.0F, 0, 0) }; // Create the clip with the curve AnimationClip clip = new AnimationClip(); clip.SetCurve("Lower", typeof(Transform), "localPosition.z", curve); clip.legacy = true; // float animationLenghtInSeconds = 2; // var rot = Quaternion.Euler(0, 0, 30); // var localRotXCurve = AnimationCurve.EaseInOut(0, transform.localRotation.x, animationLenghtInSeconds, rot.x); // var localRotYCurve = AnimationCurve.EaseInOut(0, transform.localRotation.y, animationLenghtInSeconds, rot.y); // var localRotZCurve = AnimationCurve.EaseInOut(0, transform.localRotation.z, animationLenghtInSeconds, rot.z); // var localRotWCurve = AnimationCurve.EaseInOut(0, transform.localRotation.w, animationLenghtInSeconds, rot.w); // clip.SetCurve("Lower", typeof(Transform), "localRotation.x", localRotXCurve ); // clip.SetCurve("Lower", typeof(Transform), "localRotation.y", localRotYCurve ); // clip.SetCurve("Lower", typeof(Transform), "localRotation.z", localRotZCurve ); // clip.SetCurve("Lower", typeof(Transform), "localRotation.w", localRotWCurve ); // Add and play the clip clip.wrapMode = WrapMode.Loop; anim.AddClip(clip, "test"); anim.Play("test"); } // Update is called once per frame void Update () { } }

Viewing all articles
Browse latest Browse all 192

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>