本文整理汇总了C#中Scene.GetDescendants方法的典型用法代码示例。如果您正苦于以下问题:C# Scene.GetDescendants方法的具体用法?C# Scene.GetDescendants怎么用?C# Scene.GetDescendants使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Scene
的用法示例。
在下文中一共展示了Scene.GetDescendants方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: BillboardSample
//.........这里部分代码省略.........
billboardNode.Name = null;
billboardNode.PoseWorld = pose1;
_scene.Children.Add(billboardNode);
pose1.Position.Z -= 1;
billboardNode = new BillboardNode(billboard);
billboardNode.PoseWorld = pose1;
_scene.Children.Add(billboardNode);
pose1.Position.Z -= 1;
billboardNode = new BillboardNode(billboard);
billboardNode.PoseWorld = pose1;
_scene.Children.Add(billboardNode);
// ----- Axial, viewpoint-oriented billboards
pose0.Position.X += 2;
pose1 = pose0;
billboard = new ImageBillboard(texture);
billboard.Orientation = BillboardOrientation.AxialViewpointOriented;
billboardNode = new BillboardNode(billboard);
billboardNode.Name = "Axial, viewpoint-oriented";
billboardNode.PoseWorld = pose1;
_scene.Children.Add(billboardNode);
pose1.Position.Z -= 1;
billboardNode = new BillboardNode(billboard);
billboardNode.PoseWorld = pose1;
_scene.Children.Add(billboardNode);
pose1.Position.Z -= 1;
billboardNode = new BillboardNode(billboard);
billboardNode.PoseWorld = pose1;
_scene.Children.Add(billboardNode);
pose1.Position.Z -= 1;
billboardNode = new BillboardNode(billboard);
billboardNode.PoseWorld = pose1;
_scene.Children.Add(billboardNode);
// ----- World-oriented billboards
// World-oriented billboards have a fixed orientation in world space. The
// orientation is determine by the BillboardNode.
pose0.Position.X += 2;
pose1 = pose0;
pose1.Orientation *= Matrix33F.CreateRotationY(0.2f);
billboard = new ImageBillboard(texture);
billboard.Orientation = BillboardOrientation.WorldOriented;
billboardNode = new BillboardNode(billboard);
billboardNode.Name = "World-oriented";
billboardNode.PoseWorld = pose1;
_scene.Children.Add(billboardNode);
pose1.Position.Z -= 1;
pose1.Orientation *= Matrix33F.CreateRotationY(0.2f);
billboardNode = new BillboardNode(billboard);
billboardNode.PoseWorld = pose1 * new Pose(Matrix33F.CreateRotationZ(MathHelper.ToRadians(15)));
_scene.Children.Add(billboardNode);
pose1.Position.Z -= 1;
pose1.Orientation *= Matrix33F.CreateRotationY(0.2f);
billboardNode = new BillboardNode(billboard);
billboardNode.PoseWorld = pose1 * new Pose(Matrix33F.CreateRotationZ(MathHelper.ToRadians(30)));
_scene.Children.Add(billboardNode);
pose1.Position.Z -= 1;
pose1.Orientation *= Matrix33F.CreateRotationY(0.2f);
billboardNode = new BillboardNode(billboard);
billboardNode.PoseWorld = pose1 * new Pose(Matrix33F.CreateRotationZ(MathHelper.ToRadians(45)));
_scene.Children.Add(billboardNode);
// ----- Animated billboards
// DigitalRune Graphics supports "texture atlases". I.e. textures can be packed
// together into a single, larger texture file. A PackedTexture can describe a
// single texture packed into a texture atlas or a tile set packed into a
// texture atlas. In this example the "beeWingFlap" is a set of three tiles.
// Tile sets can be used for sprite animations. (The animation is set below in
// Update().)
pose0.Position.X += 2;
pose1 = pose0;
texture = new PackedTexture("Bee", ContentManager.Load<Texture2D>("Particles/beeWingFlap"), Vector2F.Zero, Vector2F.One, 3, 1);
_animatedBillboard = new ImageBillboard(texture);
billboardNode = new BillboardNode(_animatedBillboard);
billboardNode.Name = "Animated billboards";
billboardNode.PoseWorld = pose1;
_scene.Children.Add(billboardNode);
pose1.Position.Z -= 1;
billboardNode = new BillboardNode(_animatedBillboard);
billboardNode.PoseWorld = pose1;
_scene.Children.Add(billboardNode);
pose1.Position.Z -= 1;
billboardNode = new BillboardNode(_animatedBillboard);
billboardNode.PoseWorld = pose1;
_scene.Children.Add(billboardNode);
// Use DebugRenderer to draw node names above billboard nodes.
foreach (var node in _scene.GetDescendants().OfType<BillboardNode>())
_debugRenderer.DrawText(node.Name, node.PoseWorld.Position + new Vector3F(0, 1, 0), new Vector2F(0.5f), Color.Yellow, false);
}
示例2: LensFlareSample
private readonly LensFlareRenderer _lensFlareRenderer; // Handles LensFlareNodes.
public LensFlareSample(Microsoft.Xna.Framework.Game game)
: base(game)
{
SampleFramework.IsMouseVisible = false;
var delegateGraphicsScreen = new DelegateGraphicsScreen(GraphicsService)
{
RenderCallback = Render,
};
GraphicsService.Screens.Insert(0, delegateGraphicsScreen);
// Add a custom game object which controls the camera.
_cameraObject = new CameraObject(Services);
GameObjectService.Objects.Add(_cameraObject);
// Create a new empty scene.
_scene = new Scene();
// Add the camera node to the scene.
_scene.Children.Add(_cameraObject.CameraNode);
// Add a few models to the scene.
var ground = ContentManager.Load<ModelNode>("Ground/Ground").Clone();
_scene.Children.Add(ground);
var box = ContentManager.Load<ModelNode>("MetalGrateBox/MetalGrateBox").Clone();
box.PoseLocal = new Pose(new Vector3F(0.5f, 0.5f, 0.5f), Matrix33F.CreateRotationY(0.1f));
_scene.Children.Add(box);
// Add some lights to the scene which have the same properties as the lights
// of BasicEffect.EnableDefaultLighting().
SceneSample.InitializeDefaultXnaLights(_scene);
// Add a lens flare for the sun light.
var lensFlare = new LensFlare(true); // The sun is a directional light source.
lensFlare.Name = "Sun Flare";
// The Size determines the screen size of the lens flare elements. The value
// is relative to the viewport height.
lensFlare.Size = 0.28f; // 0.28 * viewport height
// The QuerySize of a directional light is the estimated size relative to the
// viewport. This value is used in the hardware occlusion query, which determines
// whether the lens flare is visible.
lensFlare.QuerySize = 0.18f; // 0.18 * viewport height
// All lens flare elements are packed into one texture ("texture atlas").
// The PackedTexture identifies an element within the texture atlas.
// See file Media/LensFlare/LensFlares.png.
// (Credits: The sun lens flare was copied from the XNA racing game - http://exdream.com/XnaRacingGame/.)
var lensFlareTexture = ContentManager.Load<Texture2D>("LensFlare/LensFlares");
var circleTexture = new PackedTexture("Circle", lensFlareTexture, new Vector2F(0, 0), new Vector2F(0.25f, 0.5f));
var glowTexture = new PackedTexture("Glow", lensFlareTexture, new Vector2F(0.25f, 0), new Vector2F(0.25f, 0.5f));
var ringTexture = new PackedTexture("Ring", lensFlareTexture, new Vector2F(0.5f, 0), new Vector2F(0.25f, 0.5f));
var haloTexture = new PackedTexture("Halo", lensFlareTexture, new Vector2F(0.75f, 0), new Vector2F(0.25f, 0.5f));
var sunTexture = new PackedTexture("Sun", lensFlareTexture, new Vector2F(0, 0.5f), new Vector2F(0.25f, 0.5f));
var streaksTexture = new PackedTexture("Streaks", lensFlareTexture, new Vector2F(0.25f, 0.5f), new Vector2F(0.25f, 0.5f));
var flareTexture = new PackedTexture("Flare", lensFlareTexture, new Vector2F(0.5f, 0.5f), new Vector2F(0.25f, 0.5f));
// Add a few elements (circles, glow, rings, halos, streaks, ...) to the lens flare.
lensFlare.Elements.Add(new LensFlareElement(-0.2f, 0.55f, 0.0f, new Color(175, 175, 255, 20), new Vector2F(0.5f, 0.5f), circleTexture));
lensFlare.Elements.Add(new LensFlareElement(0.0f, 0.9f, 0.0f, new Color(255, 255, 255, 255), new Vector2F(0.5f, 0.5f), sunTexture));
lensFlare.Elements.Add(new LensFlareElement(0.0f, 1.8f, 0.0f, new Color(255, 255, 255, 128), new Vector2F(0.5f, 0.5f), streaksTexture));
lensFlare.Elements.Add(new LensFlareElement(0.0f, 2.6f, 0.0f, new Color(255, 255, 200, 64), new Vector2F(0.5f, 0.5f), glowTexture));
lensFlare.Elements.Add(new LensFlareElement(0.5f, 0.12f, 0.0f, new Color(60, 60, 180, 35), new Vector2F(0.5f, 0.5f), circleTexture));
lensFlare.Elements.Add(new LensFlareElement(0.55f, 0.46f, 0.0f, new Color(100, 100, 200, 60), new Vector2F(0.5f, 0.5f), circleTexture));
lensFlare.Elements.Add(new LensFlareElement(0.6f, 0.17f, 0.0f, new Color(120, 120, 220, 40), new Vector2F(0.5f, 0.5f), circleTexture));
lensFlare.Elements.Add(new LensFlareElement(0.85f, 0.2f, 0.0f, new Color(60, 60, 255, 100), new Vector2F(0.5f, 0.5f), ringTexture));
lensFlare.Elements.Add(new LensFlareElement(1.5f, 0.2f, 0.0f, new Color(255, 60, 60, 130), new Vector2F(0.5f, 0.5f), flareTexture));
lensFlare.Elements.Add(new LensFlareElement(0.15f, 0.15f, 0.0f, new Color(255, 60, 60, 90), new Vector2F(0.5f, 0.5f), flareTexture));
lensFlare.Elements.Add(new LensFlareElement(1.3f, 0.6f, 0.0f, new Color(60, 60, 255, 180), new Vector2F(0.5f, 0.5f), haloTexture));
lensFlare.Elements.Add(new LensFlareElement(1.4f, 0.2f, 0.0f, new Color(220, 80, 80, 98), new Vector2F(0.5f, 0.5f), haloTexture));
lensFlare.Elements.Add(new LensFlareElement(1.5f, 0.1f, 0.0f, new Color(220, 80, 80, 85), new Vector2F(0.5f, 0.5f), circleTexture));
lensFlare.Elements.Add(new LensFlareElement(1.6f, 0.5f, 0.0f, new Color(60, 60, 255, 80), new Vector2F(0.5f, 0.5f), haloTexture));
lensFlare.Elements.Add(new LensFlareElement(1.8f, 0.3f, 0.0f, new Color(90, 60, 255, 110), new Vector2F(0.5f, 0.5f), ringTexture));
lensFlare.Elements.Add(new LensFlareElement(1.95f, 0.5f, 0.0f, new Color(60, 60, 255, 120), new Vector2F(0.5f, 0.5f), haloTexture));
lensFlare.Elements.Add(new LensFlareElement(2.0f, 0.15f, 0.0f, new Color(60, 60, 255, 85), new Vector2F(0.5f, 0.5f), circleTexture));
// The scene node "KeyLight" (defined in SceneSample.InitializeDefaultXnaLights())
// is the main directional light source.
var keyLightNode = _scene.GetDescendants().First(n => n.Name == "KeyLight");
// Let's attach the lens flare to the "KeyLight" node.
// (Note: It is not necessary to attach a lens flare to a light node. Lens flares
// can be added anywhere within the scene. But attaching the lens flare to the
// light node ensures that the lens flare always has the same position and direction
// as the light source.)
var lensFlareNode = new LensFlareNode(lensFlare);
keyLightNode.Children = new SceneNodeCollection();
keyLightNode.Children.Add(lensFlareNode);
// Add a second lens flare.
// The previous lens flare was a caused by a directional light source (distance = infinite).
// This time we add a local lens flare.
lensFlare = new LensFlare(false);
lensFlare.Name = "Anamorphic Flare";
lensFlare.Size = 0.3f; // 0.3 * viewport height
//.........这里部分代码省略.........