コード例 #1
0
 public void Read(AssetReader reader)
 {
     AvatarSkeleton.Read(reader);
     AvatarSkeletonPose.Read(reader);
     if (HasDefaultPose(reader.Version))
     {
         DefaultPose.Read(reader);
         SkeletonNameIDArray = reader.ReadUInt32Array();
     }
     Human.Read(reader);
     HumanSkeletonIndexArray = reader.ReadInt32Array();
     if (HasHumanSkeletonReverseIndexArray(reader.Version))
     {
         HumanSkeletonReverseIndexArray = reader.ReadInt32Array();
     }
     else
     {
         HumanSkeletonReverseIndexArray = new int[AvatarSkeleton.Instance.Node.Length];
         for (int i = 0; i < AvatarSkeleton.Instance.Node.Length; i++)
         {
             HumanSkeletonReverseIndexArray[i] = HumanSkeletonIndexArray.IndexOf(i);
         }
     }
     RootMotionBoneIndex = reader.ReadInt32();
     RootMotionBoneX.Read(reader);
     if (HasRootMotionSkeleton(reader.Version))
     {
         RootMotionSkeleton.Read(reader);
         RootMotionSkeletonPose.Read(reader);
         RootMotionSkeletonIndexArray = reader.ReadInt32Array();
     }
 }
コード例 #2
0
 public void Read(AssetReader reader)
 {
     AvatarSkeleton.Read(reader);
     AvatarSkeletonPose.Read(reader);
     if (IsReadDefaultPose(reader.Version))
     {
         DefaultPose.Read(reader);
         m_skeletonNameIDArray = reader.ReadUInt32Array();
     }
     Human.Read(reader);
     m_humanSkeletonIndexArray = reader.ReadInt32Array();
     if (IsReadHumanSkeletonReverseIndexArray(reader.Version))
     {
         m_humanSkeletonReverseIndexArray = reader.ReadInt32Array();
     }
     else
     {
         m_humanSkeletonReverseIndexArray = new int[AvatarSkeleton.Instance.Node.Count];
         for (int i = 0; i < AvatarSkeleton.Instance.Node.Count; i++)
         {
             m_humanSkeletonReverseIndexArray[i] = m_humanSkeletonIndexArray.IndexOf(i);
         }
     }
     RootMotionBoneIndex = reader.ReadInt32();
     RootMotionBoneX.Read(reader);
     if (IsReadRootMotionSkeleton(reader.Version))
     {
         RootMotionSkeleton.Read(reader);
         RootMotionSkeletonPose.Read(reader);
         m_rootMotionSkeletonIndexArray = reader.ReadInt32Array();
     }
 }
コード例 #3
0
ファイル: UnityMeshPoser.cs プロジェクト: visose/Robots
        public UnityMeshPoser(RobotSystem robot, Material material)
        {
            _default = robot.DefaultPose;

            var allMeshes = _default.Meshes.SelectMany(m => m).ToList();

            _joints = new Transform[allMeshes.Count];

            var parent = GameObject.Find("Robot").transform;

            for (int i = 0; i < allMeshes.Count; i++)
            {
                string name = $"Joint {i}";
                var    go   = new GameObject(name, typeof(MeshFilter), typeof(MeshRenderer));

                var filter = go.GetComponent <MeshFilter>();
                filter.mesh = ToMesh(allMeshes[i], name);

                var renderer = go.GetComponent <MeshRenderer>();
                renderer.material = material;

                var transform = go.transform;
                transform.SetParent(parent);
                _joints[i] = transform;
            }
        }
コード例 #4
0
ファイル: RhinoMeshPoser.cs プロジェクト: visose/Robots
    public RhinoMeshPoser(RobotSystem robot)
    {
        _default = robot.DefaultPose;

        var meshCount = _default.Meshes.Sum(m => m.Count + 1);

        Meshes = new List <Mesh>(meshCount);
    }
コード例 #5
0
ファイル: PoseMatch.cs プロジェクト: matheusalb/RealityHack
 // Update is called once per frame
 void Update()
 {
     if (oldTarget != targetPose)
     {
         ChangePose();
     }
     oldTarget = targetPose;
 }
コード例 #6
0
 public void Read(EndianStream stream)
 {
     AvatarSkeleton.Read(stream);
     AvatarSkeletonPose.Read(stream);
     DefaultPose.Read(stream);
     m_skeletonNameIDArray = stream.ReadUInt32Array();
     Human.Read(stream);
     m_humanSkeletonIndexArray        = stream.ReadInt32Array();
     m_humanSkeletonReverseIndexArray = stream.ReadInt32Array();
     RootMotionBoneIndex = stream.ReadInt32();
     RootMotionBoneX.Read(stream);
     RootMotionSkeleton.Read(stream);
     RootMotionSkeletonPose.Read(stream);
     m_rootMotionSkeletonIndexArray = stream.ReadInt32Array();
 }
コード例 #7
0
    public HelixMeshPoser(RobotSystem robot, PBRMaterial material, ObservableElement3DCollection robotModels)
    {
        _default     = robot.DefaultPose;
        _robotModels = robotModels;

        foreach (var joint in _default.Meshes.SelectMany(m => m))
        {
            var model = new MeshGeometryModel3D
            {
                Geometry         = ToWPF(joint),
                Material         = material,
                Transform        = Transform3D.Identity,
                IsThrowingShadow = true
            };

            robotModels.Add(model);
        }
    }
コード例 #8
0
        public YAMLNode ExportYAML(IAssetsExporter exporter)
        {
#warning TODO: values acording to read version (current 2017.3.0f3)
            YAMLMappingNode node = new YAMLMappingNode();
            node.AddSerializedVersion(GetSerializedVersion(exporter.Version));
            node.Add("m_AvatarSkeleton", AvatarSkeleton.ExportYAML(exporter));
            node.Add("m_AvatarSkeletonPose", AvatarSkeletonPose.ExportYAML(exporter));
            node.Add("m_DefaultPose", DefaultPose.ExportYAML(exporter));
            node.Add("m_SkeletonNameIDArray", IsReadDefaultPose(exporter.Version) ? SkeletonNameIDArray.ExportYAML(true) : YAMLSequenceNode.Empty);
            node.Add("m_Human", Human.ExportYAML(exporter));
            node.Add("m_HumanSkeletonIndexArray", HumanSkeletonIndexArray.ExportYAML(true));
            node.Add("m_HumanSkeletonReverseIndexArray", IsReadHumanSkeletonReverseIndexArray(exporter.Version) ? HumanSkeletonReverseIndexArray.ExportYAML(true) : YAMLSequenceNode.Empty);
            node.Add("m_RootMotionBoneIndex", RootMotionBoneIndex);
            node.Add("m_RootMotionBoneX", RootMotionBoneX.ExportYAML(exporter));
            node.Add("m_RootMotionSkeleton", RootMotionSkeleton.ExportYAML(exporter));
            node.Add("m_RootMotionSkeletonPose", RootMotionSkeletonPose.ExportYAML(exporter));
            node.Add("m_RootMotionSkeletonIndexArray", IsReadRootMotionSkeleton(exporter.Version) ? RootMotionSkeletonIndexArray.ExportYAML(true) : YAMLSequenceNode.Empty);
            return(node);
        }
コード例 #9
0
        public YAMLNode ExportYAML()
        {
            YAMLMappingNode node = new YAMLMappingNode();

            node.AddSerializedVersion(SerializedVersion);
            node.Add("m_AvatarSkeleton", AvatarSkeleton.ExportYAML());
            node.Add("m_AvatarSkeletonPose", AvatarSkeletonPose.ExportYAML());
            node.Add("m_DefaultPose", DefaultPose.ExportYAML());
            node.Add("m_SkeletonNameIDArray", SkeletonNameIDArray.ExportYAML(true));
            node.Add("m_Human", Human.ExportYAML());
            node.Add("m_HumanSkeletonIndexArray", HumanSkeletonIndexArray.ExportYAML(true));
            node.Add("m_HumanSkeletonReverseIndexArray", HumanSkeletonReverseIndexArray.ExportYAML(true));
#warning other values crash Unity. Why?
            node.Add("m_RootMotionBoneIndex", -1 /*RootMotionBoneIndex*/);
            node.Add("m_RootMotionBoneX", RootMotionBoneX.ExportYAML());
            node.Add("m_RootMotionSkeleton", RootMotionSkeleton.ExportYAML());
            node.Add("m_RootMotionSkeletonPose", RootMotionSkeletonPose.ExportYAML());
            node.Add("m_RootMotionSkeletonIndexArray", RootMotionSkeletonIndexArray.ExportYAML(true));
            return(node);
        }
コード例 #10
0
 public void Read(AssetStream stream)
 {
     AvatarSkeleton.Read(stream);
     AvatarSkeletonPose.Read(stream);
     if (IsReadDefaultPose(stream.Version))
     {
         DefaultPose.Read(stream);
         m_skeletonNameIDArray = stream.ReadUInt32Array();
     }
     Human.Read(stream);
     m_humanSkeletonIndexArray = stream.ReadInt32Array();
     if (IsReadHumanSkeletonReverseIndexArray(stream.Version))
     {
         m_humanSkeletonReverseIndexArray = stream.ReadInt32Array();
     }
     RootMotionBoneIndex = stream.ReadInt32();
     RootMotionBoneX.Read(stream);
     if (IsReadRootMotionSkeleton(stream.Version))
     {
         RootMotionSkeleton.Read(stream);
         RootMotionSkeletonPose.Read(stream);
         m_rootMotionSkeletonIndexArray = stream.ReadInt32Array();
     }
 }
コード例 #11
0
ファイル: AvatarConstant.cs プロジェクト: loveezu/UtinyRipper
 public void Read(AssetReader reader)
 {
     AvatarSkeleton.Read(reader);
     AvatarSkeletonPose.Read(reader);
     if (IsReadDefaultPose(reader.Version))
     {
         DefaultPose.Read(reader);
         m_skeletonNameIDArray = reader.ReadUInt32Array();
     }
     Human.Read(reader);
     m_humanSkeletonIndexArray = reader.ReadInt32Array();
     if (IsReadHumanSkeletonReverseIndexArray(reader.Version))
     {
         m_humanSkeletonReverseIndexArray = reader.ReadInt32Array();
     }
     RootMotionBoneIndex = reader.ReadInt32();
     RootMotionBoneX.Read(reader);
     if (IsReadRootMotionSkeleton(reader.Version))
     {
         RootMotionSkeleton.Read(reader);
         RootMotionSkeletonPose.Read(reader);
         m_rootMotionSkeletonIndexArray = reader.ReadInt32Array();
     }
 }