本文整理汇总了C#中SceneKitSessionWWDC2013.PresentationViewController.UpdateLightingWithIntensities方法的典型用法代码示例。如果您正苦于以下问题:C# PresentationViewController.UpdateLightingWithIntensities方法的具体用法?C# PresentationViewController.UpdateLightingWithIntensities怎么用?C# PresentationViewController.UpdateLightingWithIntensities使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SceneKitSessionWWDC2013.PresentationViewController
的用法示例。
在下文中一共展示了PresentationViewController.UpdateLightingWithIntensities方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: PresentStep
//.........这里部分代码省略.........
case 3:
// Add geometries (spheres) to represent the stars
SunNode.Geometry = SCNSphere.Create (2.5f);
EarthNode.Geometry = SCNSphere.Create (1.5f);
MoonNode.Geometry = SCNSphere.Create (0.75f);
// Add a textured plane to represent Earth's orbit
var earthOrbit = SCNNode.Create ();
earthOrbit.Opacity = 0.4f;
earthOrbit.Geometry = SCNPlane.Create (31, 31);
earthOrbit.Geometry.FirstMaterial.Diffuse.Contents = new NSImage (NSBundle.MainBundle.PathForResource ("Scenes/earth/orbit", "png"));
earthOrbit.Geometry.FirstMaterial.Diffuse.MipFilter = SCNFilterMode.Linear;
earthOrbit.Rotation = new SCNVector4 (1, 0, 0, -(float)(Math.PI / 2));
earthOrbit.Geometry.FirstMaterial.LightingModelName = SCNLightingModel.Constant; // no lighting
SunNode.AddChildNode (earthOrbit);
break;
case 4:
// Add a halo to the Sun (a simple textured plane that does not write to depth)
SunHaloNode = SCNNode.Create ();
SunHaloNode.Geometry = SCNPlane.Create (30, 30);
SunHaloNode.Rotation = new SCNVector4 (1, 0, 0, Pitch * (float)(Math.PI / 180.0f));
SunHaloNode.Geometry.FirstMaterial.Diffuse.Contents = new NSImage (NSBundle.MainBundle.PathForResource ("Scenes/earth/sun-halo", "png"));
SunHaloNode.Geometry.FirstMaterial.LightingModelName = SCNLightingModel.Constant; // no lighting
SunHaloNode.Geometry.FirstMaterial.WritesToDepthBuffer = false; // do not write to depth
SunHaloNode.Opacity = 0.2f;
SunNode.AddChildNode (SunHaloNode);
// Add materials to the stars
EarthNode.Geometry.FirstMaterial.Diffuse.Contents = new NSImage (NSBundle.MainBundle.PathForResource ("Scenes/earth/earth-diffuse-mini", "jpg"));
EarthNode.Geometry.FirstMaterial.Emission.Contents = new NSImage (NSBundle.MainBundle.PathForResource ("Scenes/earth/earth-emissive-mini", "jpg"));
EarthNode.Geometry.FirstMaterial.Specular.Contents = new NSImage (NSBundle.MainBundle.PathForResource ("Scenes/earth/earth-specular-mini", "jpg"));
MoonNode.Geometry.FirstMaterial.Diffuse.Contents = new NSImage (NSBundle.MainBundle.PathForResource ("Scenes/earth/moon", "jpg"));
SunNode.Geometry.FirstMaterial.Multiply.Contents = new NSImage (NSBundle.MainBundle.PathForResource ("Scenes/earth/sun", "jpg"));
SunNode.Geometry.FirstMaterial.Diffuse.Contents = new NSImage (NSBundle.MainBundle.PathForResource ("Scenes/earth/sun", "jpg"));
SunNode.Geometry.FirstMaterial.Multiply.Intensity = 0.5f;
SunNode.Geometry.FirstMaterial.LightingModelName = SCNLightingModel.Constant;
SunNode.Geometry.FirstMaterial.Multiply.WrapS =
SunNode.Geometry.FirstMaterial.Diffuse.WrapS =
SunNode.Geometry.FirstMaterial.Multiply.WrapT =
SunNode.Geometry.FirstMaterial.Diffuse.WrapT = SCNWrapMode.Repeat;
EarthNode.Geometry.FirstMaterial.LocksAmbientWithDiffuse =
MoonNode.Geometry.FirstMaterial.LocksAmbientWithDiffuse =
SunNode.Geometry.FirstMaterial.LocksAmbientWithDiffuse = true;
EarthNode.Geometry.FirstMaterial.Shininess = 0.1f;
EarthNode.Geometry.FirstMaterial.Specular.Intensity = 0.5f;
MoonNode.Geometry.FirstMaterial.Specular.Contents = NSColor.Gray;
// Achieve a lava effect by animating textures
animation = CABasicAnimation.FromKeyPath ("contentsTransform");
animation.Duration = 10.0f;
var animationTransform1 = CATransform3D.MakeTranslation (0, 0, 0);
animationTransform1 = animationTransform1.Concat (CATransform3D.MakeScale (3, 3, 3));
var animationTransform2 = CATransform3D.MakeTranslation (1, 0, 0);
animationTransform2 = animationTransform1.Concat (CATransform3D.MakeScale (3, 3, 3));
animation.From = NSValue.FromCATransform3D (animationTransform1);
animation.To = NSValue.FromCATransform3D (animationTransform2);
animation.RepeatCount = float.MaxValue;
SunNode.Geometry.FirstMaterial.Diffuse.AddAnimation (animation, new NSString ("sun-texture"));
animation = CABasicAnimation.FromKeyPath ("contentsTransform");
animation.Duration = 30.0f;
animationTransform1 = CATransform3D.MakeTranslation (0, 0, 0);
animationTransform1 = animationTransform1.Concat (CATransform3D.MakeScale (5, 5, 5));
animationTransform2 = CATransform3D.MakeTranslation (1, 0, 0);
animationTransform2 = animationTransform1.Concat (CATransform3D.MakeScale (5, 5, 5));
animation.From = NSValue.FromCATransform3D (animationTransform1);
animation.To = NSValue.FromCATransform3D (animationTransform2);
animation.RepeatCount = float.MaxValue;
SunNode.Geometry.FirstMaterial.Multiply.AddAnimation (animation, new NSString ("sun-texture2"));
break;
case 5:
// We will turn off all the lights in the scene and add a new light
// to give the impression that the Sun lights the scene
var lightNode = SCNNode.Create ();
lightNode.Light = SCNLight.Create ();
lightNode.Light.Color = NSColor.Black; // initially switched off
lightNode.Light.LightType = SCNLightType.Omni;
SunNode.AddChildNode (lightNode);
// Configure attenuation distances because we don't want to light the floor
lightNode.Light.SetAttribute (new NSNumber (20), SCNLightAttribute.AttenuationEndKey);
lightNode.Light.SetAttribute (new NSNumber (19.5), SCNLightAttribute.AttenuationStartKey);
// Animation
SCNTransaction.Begin ();
SCNTransaction.AnimationDuration = 1;
lightNode.Light.Color = NSColor.White; // switch on
presentationViewController.UpdateLightingWithIntensities (new float[] { 0.0f }); //switch off all the other lights
SunHaloNode.Opacity = 0.5f; // make the halo stronger
SCNTransaction.Commit ();
break;
}
}
示例2: PresentStep
public override void PresentStep (int index, PresentationViewController presentationViewController)
{
switch (index) {
case 0:
// Hide everything (in case the user went backward)
for (var i = 1; i < 4; i++) {
var teapot = GroundNode.FindChildNode ("Teapot" + i, true);
teapot.Opacity = 0.0f;
}
break;
case 1:
// Move the camera and adjust the clipping plane
SCNTransaction.Begin ();
SCNTransaction.AnimationDuration = 3;
presentationViewController.CameraNode.Position = new SCNVector3 (0, 0, 200);
presentationViewController.CameraNode.Camera.ZFar = 500.0f;
SCNTransaction.Commit ();
break;
case 2:
// Revert to original position
SCNTransaction.Begin ();
SCNTransaction.AnimationDuration = 1;
presentationViewController.CameraNode.Position = new SCNVector3 (0, 0, 0);
presentationViewController.CameraNode.Camera.ZFar = 100.0f;
SCNTransaction.Commit ();
break;
case 3:
var numberNodes = new SCNNode[] { AddNumberNode ("64k", -17),
AddNumberNode ("6k", -9),
AddNumberNode ("3k", -1),
AddNumberNode ("1k", 6.5f),
AddNumberNode ("256", 14)
};
SCNTransaction.Begin ();
SCNTransaction.AnimationDuration = 1;
// Move the camera and the text
presentationViewController.CameraHandle.Position = new SCNVector3 (presentationViewController.CameraHandle.Position.X, presentationViewController.CameraHandle.Position.Y + 6, presentationViewController.CameraHandle.Position.Z);
TextManager.TextNode.Position = new SCNVector3 (TextManager.TextNode.Position.X, TextManager.TextNode.Position.Y + 6, TextManager.TextNode.Position.Z);
// Show the remaining resolutions
for (var i = 0; i < 5; i++) {
var numberNode = numberNodes [i];
numberNode.Position = new SCNVector3 (numberNode.Position.X, 7, -5);
var teapot = GroundNode.FindChildNode ("Teapot" + i, true);
teapot.Opacity = 1.0f;
teapot.Rotation = new SCNVector4 (0, 0, 1, (float)(Math.PI / 4));
teapot.Position = new SCNVector3 ((i - 2) * 8, 5, teapot.Position.Z);
}
SCNTransaction.Commit ();
break;
case 4:
presentationViewController.ShowsNewInSceneKitBadge (true);
// Remove the numbers
RemoveNumberNodes ();
SCNTransaction.Begin ();
SCNTransaction.AnimationDuration = 1;
// Add some text and code
TextManager.SetSubtitle ("SCNLevelOfDetail");
TextManager.AddCode ("#var lod1 = SCNLevelOfDetail.#CreateWithWorldSpaceDistance# (aGeometry, aDistance); \n"
+ "geometry.#LevelsOfDetail# = new SCNLevelOfDetail { lod1, lod2, ..., lodn };#");
// Animation the merge
for (int i = 0; i < 5; i++) {
var teapot = GroundNode.FindChildNode ("Teapot" + i, true);
teapot.Opacity = i == 0 ? 1.0f : 0.0f;
teapot.Rotation = new SCNVector4 (0, 0, 1, 0);
teapot.Position = new SCNVector3 (0, -5, teapot.Position.Z);
}
// Move the camera and the text
presentationViewController.CameraHandle.Position = new SCNVector3 (presentationViewController.CameraHandle.Position.X, presentationViewController.CameraHandle.Position.Y - 3, presentationViewController.CameraHandle.Position.Z);
TextManager.TextNode.Position = new SCNVector3 (TextManager.TextNode.Position.X, TextManager.TextNode.Position.Y - 3, TextManager.TextNode.Position.Z);
SCNTransaction.Commit ();
break;
case 5:
presentationViewController.ShowsNewInSceneKitBadge (false);
SCNTransaction.Begin ();
SCNTransaction.AnimationDuration = 3;
// Change the lighting to remove the front light and rise the main light
presentationViewController.UpdateLightingWithIntensities (new float[] { 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.3f });
presentationViewController.RiseMainLight (true);
// Remove some text
TextManager.FadeOutText (SlideTextManager.TextType.Title);
TextManager.FadeOutText (SlideTextManager.TextType.Subtitle);
TextManager.FadeOutText (SlideTextManager.TextType.Code);
SCNTransaction.Commit ();
// Retrieve the main teapot
var maintTeapot = GroundNode.FindChildNode ("Teapot0", true);
//.........这里部分代码省略.........
示例3: PresentStep
public override void PresentStep (int index, PresentationViewController presentationViewController)
{
SCNTransaction.Begin ();
SCNTransaction.AnimationDuration = 1.0f;
switch (index) {
case 0:
// Set the slide's title and add some code
TextManager.SetTitle ("Materials");
TextManager.AddBulletAtLevel ("Diffuse", 0);
TextManager.AddBulletAtLevel ("Ambient", 0);
TextManager.AddBulletAtLevel ("Specular and shininess", 0);
TextManager.AddBulletAtLevel ("Normal", 0);
TextManager.AddBulletAtLevel ("Reflective", 0);
TextManager.AddBulletAtLevel ("Emission", 0);
TextManager.AddBulletAtLevel ("Transparent", 0);
TextManager.AddBulletAtLevel ("Multiply", 0);
break;
case 1:
EarthNode.Opacity = 1.0f;
presentationViewController.UpdateLightingWithIntensities (new float[] { 1 });
break;
case 2:
EarthNode.Geometry.FirstMaterial.Diffuse.Contents = NSColor.Blue;
TextManager.HighlightBullet (0);
ShowCodeExample ("#material.#diffuse.contents# = [NSColor blueColor];#", null, null);
break;
case 3:
EarthNode.Geometry.FirstMaterial.Diffuse.Contents = new NSImage (NSBundle.MainBundle.PathForResource ("Scenes/earth/earth-diffuse", "jpg"));
ShowCodeExample ("#material.#diffuse.contents# =#", "earth-diffuse-mini", "jpg");
break;
case 4:
EarthNode.Geometry.FirstMaterial.Ambient.Contents = new NSImage (NSBundle.MainBundle.PathForResource ("Scenes/earth/earth-diffuse", "jpg"));
EarthNode.Geometry.FirstMaterial.Ambient.Intensity = 1;
TextManager.HighlightBullet (1);
ShowCodeExample ("#material.#ambient#.contents =#", "earth-diffuse-mini", "jpg");
presentationViewController.UpdateLightingWithIntensities (LightIntensities);
break;
case 5:
EarthNode.Geometry.FirstMaterial.Shininess = 0.1f;
EarthNode.Geometry.FirstMaterial.Specular.Contents = NSColor.White;
TextManager.HighlightBullet (2);
ShowCodeExample ("#material.#specular#.contents = [NSColor whiteColor];#", null, null);
break;
case 6:
EarthNode.Geometry.FirstMaterial.Specular.Contents = new NSImage (NSBundle.MainBundle.PathForResource ("Scenes/earth/earth-specular", "jpg"));
ShowCodeExample ("#material.#specular#.contents =#", "earth-specular-mini", "jpg");
break;
case 7:
EarthNode.Geometry.FirstMaterial.Normal.Contents = new NSImage (NSBundle.MainBundle.PathForResource ("Scenes/earth/earth-bump", "png"));
EarthNode.Geometry.FirstMaterial.Normal.Intensity = 1.3f;
TextManager.HighlightBullet (3);
ShowCodeExample ("#material.#normal#.contents =#", "earth-bump", "png");
break;
case 8:
EarthNode.Geometry.FirstMaterial.Reflective.Contents = new NSImage (NSBundle.MainBundle.PathForResource ("Scenes/earth/earth-reflective", "jpg"));
EarthNode.Geometry.FirstMaterial.Reflective.Intensity = 0.7f;
EarthNode.Geometry.FirstMaterial.Specular.Intensity = 0.0f;
SCNTransaction.Begin ();
SCNTransaction.AnimationDuration = 2.0f;
SCNTransaction.AnimationTimingFunction = CAMediaTimingFunction.FromName (CAMediaTimingFunction.EaseInEaseOut);
CameraOriginalPosition = presentationViewController.CameraHandle.Position;
presentationViewController.CameraHandle.Position = presentationViewController.CameraHandle.ConvertPositionToNode (new SCNVector3 (6, 0, -10.11f), presentationViewController.CameraHandle.ParentNode);
SCNTransaction.Commit ();
TextManager.HighlightBullet (4);
ShowCodeExample ("material.#reflective#.contents =", "earth-reflective", "jpg");
break;
case 9:
SCNTransaction.Begin ();
SCNTransaction.AnimationDuration = 1.0f;
SCNTransaction.AnimationTimingFunction = CAMediaTimingFunction.FromName (CAMediaTimingFunction.EaseInEaseOut);
presentationViewController.CameraHandle.Position = CameraOriginalPosition;
SCNTransaction.Commit ();
break;
case 10:
EarthNode.Geometry.FirstMaterial.Emission.Contents = new NSImage (NSBundle.MainBundle.PathForResource ("Scenes/earth/earth-emissive", "jpg"));
EarthNode.Geometry.FirstMaterial.Reflective.Intensity = 0.3f;
EarthNode.Geometry.FirstMaterial.Emission.Intensity = 0.5f;
TextManager.HighlightBullet (5);
ShowCodeExample ("material.#emission#.contents =", "earth-emissive-mini2", "jpg");
break;
case 11:
EarthNode.Geometry.FirstMaterial.Emission.Intensity = 1.0f;
EarthNode.Geometry.FirstMaterial.Reflective.Intensity = 0.1f;
ShowCodeExample (null, null, null);
presentationViewController.UpdateLightingWithIntensities (new float[] { 0.01f }); // keeping the intensity non null avoids an unnecessary shader recompilation
break;
//.........这里部分代码省略.........