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; }