protected override SceneNode OnCreateSceneNode()
        {
            var node = new BoneSkinMeshNode();

            node.OnSetRenderTechnique = host =>
            {
                return(host.EffectsManager[CustomEffectsManager.CustomShaderNames.CustomShader]);
            };

            return(node);
        }
            /// <summary>
            /// Creates the skeleton node.
            /// </summary>
            /// <param name="node">The node.</param>
            /// <param name="material">The material.</param>
            /// <param name="effectName">Name of the effect.</param>
            /// <param name="scale">The scale.</param>
            /// <returns></returns>
            public static BoneSkinMeshNode CreateSkeletonNode(BoneSkinMeshNode node, MaterialCore material, string effectName, float scale)
            {
                var skNode = new BoneSkinMeshNode()
                {
                    Material       = material,
                    IsSkeletonNode = true,
                };

                skNode.Geometry    = BoneSkinnedMeshGeometry3D.CreateSkeletonMesh(node.Bones, scale);
                skNode.PostEffects = effectName;
                skNode.Bones       = node.Bones;
                return(skNode);
            }
        /// <summary>
        /// Adds the skeleton node to the viewport
        /// </summary>
        /// <param name="targetRace">The race the skeleton will be obtained from</param>
        public void AddSkeletonNode(XivRace targetRace)
        {
            // Clear existing skeleton
            ModelGroup.Dispose();
            ModelGroup.Clear();

            var bones = MakeHelixBones(targetRace);

            var bsmNode = new BoneSkinMeshNode
            {
                Bones = bones.ToArray()
            };

            // Create the skeleton node with the given properties
            var skelNode = bsmNode.CreateSkeletonNode(new DiffuseMaterialCore {
                DiffuseColor = Color.Red
            }, "xrayGrid", 0.02f);

            ModelGroup.AddNode(skelNode);

            ModelGroup.SceneNode.Visible = _modelViewModel.ShowSkeleton;
        }