Esempio n. 1
0
        public static void Main(string[] args)
        {
            var    pos     = new Vector3(1, 0, 0);
            var    t       = Matrix.RotationAxis(new Vector3(0, 0, 1), 3.141592f / 2.0f);
            var    transed = Vector3.Transform(pos, t);
            Matrix right   = PmxUtil.LookAt(new Vector3(0, 0, 0), new Vector3(10, 0, 0), new Vector3(0, 1, 0));

            //Matrix right = Matrix.LookAtLH(new Vector3(0,0,0), new Vector3(10,0,0), new Vector3(0,0,1) );
            right.Decompose(out Vector3 scale, out Quaternion rot, out Vector3 loc);
            Console.WriteLine("");
        }
Esempio n. 2
0
        private void ControllSavehandler(object sender, EventArgs e)
        {
            var bone         = SelectedBone().First();
            var pos          = PmxUtil.TargetPosition(bone);
            var distFieldCSV = space.XYZ;
            var list         = new string[] {
                bone.Name,
                bone.Position.X + "," + bone.Position.Y + "," + bone.Position.Z,
                (pos.X + "," + pos.Y + "," + pos.Z),
                distFieldCSV,
            };
            var path = space.ShowSave();

            File.WriteAllLines(path, list);
        }
Esempio n. 3
0
        private Vector3 BoneLocalVerticePosition(IPXBone selBone, IPXVertex item)
        {
            var pos = PmxUtil.BoneAttitude(selBone);

            pos.Decompose(out Vector3 scale, out Quaternion rot, out Vector3 loc);
            rot = Quaternion.Invert(rot);
            //foreach (var item in Pmx.Vertex)
            {
                // なんかpositionなくなる
                //item.Position -= selBone.Position;
                //Vector4 vector4 = Vector3.Transform(item.Position, Matrix.RotationAxis(rot.Axis, rot.Angle));
                //item.Position = new V3(vector4.X, vector4.Y, vector4.Z);
                var     tmp     = item.Position - selBone.Position;
                Vector4 vector4 = Vector3.Transform(tmp, Matrix.RotationAxis(rot.Axis, rot.Angle));
                return(new V3(vector4.X, vector4.Y, vector4.Z));
            }
        }
Esempio n. 4
0
        private void ControllLoadHandler(object sender, EventArgs e)
        {
            var path  = space.ShowLoad();
            var lines = File.ReadAllLines(path);
            var bone  = Pmx.Bone.First(b => b.Name == lines[0]);
            var xyz   = lines[1].Split(',').Select(float.Parse).ToArray();
            var v3    = new V3(xyz[0], xyz[1], xyz[2]);

            bone.Position = v3;
            var targetXYZ = lines[2].Split(',').Select(float.Parse).ToArray();
            var target    = new V3(targetXYZ[0], targetXYZ[1], targetXYZ[2]);

            PmxUtil.SetTargetPosition(bone, target);
            space.XYZ = lines[3];
            Con.Update(Pmx);
            View.UpdateModel();
        }