SceneKit 命名空间

SceneKit 命名空间提供基于场景图的高级 3D 图形。

_SCNShaderModifiers

着色器代码片段的字典。

SCNAccelerationConstraint

SceneKit 命名空间提供基于场景图的高级 3D 图形。

SCNAction

SCNNode执行操作,包括对外观、几何图形、动画或任意函数的更改。

SCNActionable

允许应用操作。

SCNActionable_Extensions

接口的 ISCNActionable 扩展方法,以支持协议中的所有方法 SCNActionable

SCNAnimatable

允许应用动画。

SCNAnimatable_Extensions

接口的 ISCNAnimatable 扩展方法,以支持协议中的所有方法 SCNAnimatable

SCNAnimatableExtensions

ISCNAnimatable 的扩展方法。

SCNAnimation

SceneKit 命名空间提供基于场景图的高级 3D 图形。

SCNAnimationEvent

在动画期间的特定时间执行函数。

SCNAnimationPlayer

SceneKit 命名空间提供基于场景图的高级 3D 图形。

SCNAudioPlayer

SCNAudioSource保留 或 AVAudioNode 以用于位置音频。

SCNAudioSource

SceneKit 场景中位置音频的可重用音频源。

SCNAvoidOccluderConstraint

SceneKit 命名空间提供基于场景图的高级 3D 图形。

SCNAvoidOccluderConstraintDelegate

SceneKit 命名空间提供基于场景图的高级 3D 图形。

SCNAvoidOccluderConstraintDelegate_Extensions

接口的 ISCNAvoidOccluderConstraintDelegate 扩展方法,以支持协议中的所有方法 SCNAvoidOccluderConstraintDelegate

SCNBillboardConstraint

自动约束 , SCNNode 使其始终指向当前呈现节点。

SCNBoundingVolume

在 3D 空间中定义卷的函数。

SCNBox

一个 SCNGeometry ,其面都是矩形。

SCNCamera

指定具有视场和景深等属性的相机。

SCNCameraController

SceneKit 命名空间提供基于场景图的高级 3D 图形。

SCNCameraControllerDelegate

SceneKit 命名空间提供基于场景图的高级 3D 图形。

SCNCameraControllerDelegate_Extensions

接口的 ISCNCameraControllerDelegate 扩展方法,以支持协议中的所有方法 SCNCameraControllerDelegate

SCNCapsule

一个 SCNGeometry ,它是带封顶端的圆柱体。

SCNCone

一个 SCNGeometry ,它是一个圆形视锥。 或者,一顶派对帽子。

SCNConstraint

自动调整节点的转换。

SCNCylinder

SCNGeometry 个右圆形圆柱的 。

SCNDistanceConstraint

SceneKit 命名空间提供基于场景图的高级 3D 图形。

SCNErrorCodeExtensions

SceneKit.SCNErrorCode 枚举的扩展方法。

SCNFloor

SCNGeometry 无限平面的 。

SCNGeometry

SceneKit geometry 对象的基类

SCNGeometryElement

合并有关顶点和绘图基元的信息。 映射到发送到 GPU 的单个绘图命令。

SCNGeometrySource

提供与 SCNGeometryElements 一起定义 3D 对象的顶点数据。

SCNGeometrySourceSemantic

枚举顶点模式属性。

SCNGeometryTessellator

SceneKit 命名空间提供基于场景图的高级 3D 图形。

SCNHitTest

与 中的 参数一起使用的optionsHitTest(SCNVector3, SCNVector3, SCNHitTestOptions)常量。

SCNHitTestOptions

SCNNode 和 SCNSceneRenderer 中用于命中测试的配置选项

SCNHitTestResult

有关 SCNNode 的信息 (是否有任何) 位于特定点或沿着光线。

SCNIKConstraint

应用 SCNConstraint 反运动学的 。

SCNJavaScript

包含用于导出 JavaScript 模块的方法的静态类。

SCNLayer

SceneKit 命名空间提供基于场景图的高级 3D 图形。

SCNLevelOfDetail

控制在世界空间或屏幕空间中以阈值呈现的备用几何图形。

SCNLight

用于所有 SCNLightType 的光源。

SCNLightAttribute

SceneKit 命名空间提供基于场景图的高级 3D 图形。

SCNLightingModel

用于 SceneKit.SCNMaterial.LightingModel 属性的常量,该属性定义光和材料组合生成特定呈现颜色的方式。

SCNLightType

枚举 的类型 SCNLight

SCNLookAtConstraint

一个 SCNConstraint ,使节点指向另一个节点。

SCNMaterial

指定 SCNGeometry 表面的照明和着色特征。

SCNMaterialProperty

配置各种属性 (,例如 的颜色和纹理) SCNMaterial

SCNMorpher

SCNGeometry 到一个或多个目标 SCNGeometry 对象的动画转换。

SCNNode

场景图中的节点。

SCNNodeRendererDelegate

定义用于添加自定义 OpenGL 绘图代码的委托对象函数的接口。

SCNNodeRendererDelegate_Extensions

接口的 ISCNNodeRendererDelegate 扩展方法,以支持协议中的所有方法 SCNNodeRendererDelegate

SCNParticleProperty

SceneKit 命名空间提供基于场景图的高级 3D 图形。

SCNParticlePropertyController

对 SCNParticleSystem 发出的粒子的属性进行动画处理。

SCNParticleSystem

发出其行为由开发人员指定的小子画面。

SCNPhysicsBallSocketJoint

允许两个 SCNPhysicsBody 对象相互旋转的 SCNPhysicsBehavior。

SCNPhysicsBehavior

控制一个或多个 SCNPhysicsBody 对象的行为。

SCNPhysicsBody

将物理模拟添加到 SCNNode。

SCNPhysicsConeTwistJoint

SceneKit 命名空间提供基于场景图的高级 3D 图形。

SCNPhysicsContact

两个 SCNPhysicsBody 对象如何相互接触。

SCNPhysicsContactDelegate

委托对象函数响应对象之间的 SCNPhysicsBody 触摸。

SCNPhysicsContactDelegate_Extensions

接口的 ISCNPhysicsContactDelegate 扩展方法,以支持协议中的所有方法 SCNPhysicsContactDelegate

SCNPhysicsContactEventArgs

提供 E:SceneKit.SCNPhysicsContactEventArgs.DidEndContContactE:SceneKit.SCNPhysicsContactEventArgs.DidUpdateContact 事件的数据DidUpdateContact

SCNPhysicsField

将强制应用于给定卷中的所有 SCNPhysicsBody 对象。

SCNPhysicsHingeJoint

一个 SCNPhysicsBehavior,它沿单个轴附加两个 SCNPhysicsBody 对象。

SCNPhysicsShape

SCNPhysicsBody 的实心卷。 用于冲突检测。

SCNPhysicsShapeOptions

*一起使用的字典的有效键options

SCNPhysicsShapeOptionsKeys

定义用于 options 传递给 * 的字典的有效密钥。

SCNPhysicsShapeOptionsTypes

SCNPhysicsShape关联的几何类型。

SCNPhysicsSliderJoint

连接两个 SCNPhysicsBody 对象的 SCNPhysicsBehavior,允许它们围绕其连接点滑动和旋转。

SCNPhysicsTest

用于 M:SceneKit.SCNPhysicsWorld.ContactTest*的有效选项。

SCNPhysicsTestKeys

包含控制搜索、背面剔除和冲突测试的值。

SCNPhysicsTestSearchModeKeys

枚举控制返回哪些冲突搜索结果的值。

SCNPhysicsVehicle

模拟轮式车辆物理特性的 SCNPhysicsBehavior。

SCNPhysicsVehicleWheel

SCNPhysicsVehicle 上车轮的外观和物理特征。

SCNPhysicsWorld

一种物理模拟,用于模拟 SCNScene 中的碰撞和其他与物理相关的属性。

SCNPlane

一个 SCNGeometry ,它是矩形单面有限平面。

SCNProgram

使用用 OpenGL 着色语言编写的着色器执行自定义渲染。

SCNProgramDelegate

SCNProgram 对象的委托对象。

SCNProgramDelegate_Extensions

接口的 ISCNProgramDelegate 扩展方法,以支持协议中的所有方法 SCNProgramDelegate

SCNProgramSemanticOptions

定义 MappingChannel 与 一起使用 SetSemantic(NSString, String, SCNProgramSemanticOptions)的 。

SCNPropertyControllers

SceneKit 命名空间提供基于场景图的高级 3D 图形。

SCNPyramid

SCNGeometry 右矩形棱锥的 。

SCNReferenceNode

SCNNode 场景文件加载其内容的 。

SCNRenderer

将 SCNScene 呈现到 OpenGL 上下文中。

SCNRenderingArguments

定义用于 和 SetSemantic(NSString, String, SCNProgramSemanticOptions)Render(SCNNode, SCNRenderer, NSDictionary)键。

SCNRenderingOptions

一个 DictionaryContainer ,用于在实例化 SCNView时定义 options

SCNReplicatorConstraint

SceneKit 命名空间提供基于场景图的高级 3D 图形。

SCNScene

3D 场景的最高级别描述。

SCNSceneExportDelegate

定义用于处理将场景导出到文件的方法的协议。

SCNSceneExportDelegate_Extensions

接口的 ISCNSceneExportDelegate 扩展方法,以支持协议中的所有方法 SCNSceneExportDelegate

SCNSceneLoadingOptions

场景加载选项。

SCNSceneRenderer

接口的 ISCNSceneRenderer 实现类。

SCNSceneRenderer_Extensions

接口的 ISCNSceneRenderer 扩展方法,以支持协议中的所有方法 SCNSceneRenderer

SCNSceneRendererDelegate

SCNRenderer 类的委托对象定义反映呈现事件的方法。

SCNSceneRendererDelegate_Extensions

接口的 ISCNSceneRendererDelegate 扩展方法,以支持协议中的所有方法 SCNSceneRendererDelegate

SCNSceneSource

从文件或 NSData 对象读取场景定义数据。

SCNSceneSourceLoadErrors

枚举加载 SCNSceneSource时可能发生的错误类型。

SCNSceneSourceLoading

用于创建和加载 SCNScene 对象的选项。

SCNSceneSourceProperties

与场景文件关联的元数据键。 与 GetProperty(NSString) 一起使用。

SCNShadable

ISCNShadable 的实现。

SCNShadable_Extensions

接口的 ISCNShadable 扩展方法,以支持协议中的所有方法 SCNShadable

SCNShaderModifiers

一个 DictionaryContainer 包含着色器选项的 。

SCNShape

SCNGeometry从 2D 路径创建的 ,可以选择延伸为三个维度。

SCNSkinner

访问支持骨架动画的场景图。

SCNSliderConstraint

SceneKit 命名空间提供基于场景图的高级 3D 图形。

SCNSphere

SCNGeometry 个,它是一个球体。

SCNTechnique

提供其他绘图通道,其中每个通道都应用一个着色器。

SCNTechniqueSupport

ISCNTechniqueSupport 实现,它只是保存对 的 SCNTechnique引用。

SCNText

SCNGeometry基于字符串的 ,可以选择延伸成三个维度。

SCNTimingFunction

SceneKit 命名空间提供基于场景图的高级 3D 图形。

SCNTorus

SCNGeometry 个 ,它是一个环形的实心。

SCNTransaction

允许以原子方式应用一组修改。

SCNTransformConstraint

SCNConstraint 个 ,用于执行一个函数,该函数指定转换更改 (一个或多个节点的位置、旋转和缩放) 。

SCNTube

一个 SCNGeometry ,它是一个圆柱体,其中心轴上有一个孔。

SCNView

呈现 UIViewSCNScene的 。

SCNView.SCNViewAppearance

类型 SCNView为 的 对象的外观类。

结构

SCNMatrix4

4x4 矩阵。

SCNQuaternion

表示四元数,并包含对其操作的方法。

SCNVector3

一个 3 分量的向量。

SCNVector4

一个 4 分量的向量。

接口

ISCNActionable

表示所需方法的接口 ((如果协议 SCNActionable有任何) )。

ISCNAnimatable

表示所需方法的接口 ((如果协议 SCNAnimatable有任何) )。

ISCNAnimationProtocol

SceneKit 命名空间提供基于场景图的高级 3D 图形。

ISCNAvoidOccluderConstraintDelegate

表示所需方法的接口 ((如果协议 SCNAvoidOccluderConstraintDelegate有任何) )。

ISCNBoundingVolume

表示所需方法的接口 ((如果协议 SCNBoundingVolume有任何) )。

ISCNBufferStream

用于管理自定义着色器的金属缓冲区的接口。

ISCNCameraControlConfiguration

SceneKit 命名空间提供基于场景图的高级 3D 图形。

ISCNCameraControllerDelegate

表示所需方法的接口 ((如果协议 SCNCameraControllerDelegate有任何) )。

ISCNNodeRendererDelegate

表示所需方法的接口 ((如果协议 SCNNodeRendererDelegate有任何) )。

ISCNPhysicsContactDelegate

表示所需方法的接口 ((如果协议 SCNPhysicsContactDelegate有任何) )。

ISCNProgramDelegate

表示所需方法的接口 ((如果协议 SCNProgramDelegate有任何) )。

ISCNSceneExportDelegate

表示所需方法的接口 ((如果协议 SCNSceneExportDelegate有任何) )。

ISCNSceneRenderer

表示所需方法的接口 ((如果协议 SCNSceneRenderer有任何) )。

ISCNSceneRendererDelegate

表示所需方法的接口 ((如果协议 SCNSceneRendererDelegate有任何) )。

ISCNShadable

表示所需方法的接口 ((如果协议 SCNShadable有任何) )。

ISCNTechniqueSupport

表示所需方法的接口 ((如果协议 SCNTechniqueSupport有任何) )。

枚举

SCNActionTimingMode

枚举用于 SCNAction 对象的速率曲线。

SCNAnimationImportPolicy

枚举动画导入策略。

SCNAntialiasingMode

枚举控制抗锯齿行为的值。

SCNBillboardAxis

对受 SCNBillboardConstraint约束的节点可用的轴锁的枚举。

SCNBlendMode

SceneKit 将材料中的颜色与呈现目标中已存在的颜色混合的方式的枚举。

SCNBufferFrequency

枚举一些值,这些值控制是按帧调用处理程序、按帧调用每个节点,还是按每个帧调用每个带阴影的可呈现对象。

SCNCameraProjectionDirection

SceneKit 命名空间提供基于场景图的高级 3D 图形。

SCNChamferMode

枚举 的倒角方式 SCNShape ;在其正面、背面或两侧。

SCNColorMask

SceneKit 命名空间提供基于场景图的高级 3D 图形。

SCNCullMode

确定要呈现图面 SCNMaterial 的哪些面的枚举。

SCNDebugOptions

枚举调试覆盖选项。

SCNErrorCode

SceneKit 命名空间提供基于场景图的高级 3D 图形。

SCNFillMode

SceneKit 命名空间提供基于场景图的高级 3D 图形。

SCNFilterMode

纹理筛选模式的枚举。

SCNGeometryPrimitiveType

2D 几何基元的枚举。

SCNGeometrySourceSemantics

枚举几何图形数据的语义。

SCNHitTestSearchMode

SceneKit 命名空间提供基于场景图的高级 3D 图形。

SCNInteractionMode

SceneKit 命名空间提供基于场景图的高级 3D 图形。

SCNMorpherCalculationMode

的有效内插公式的 CalculationMode枚举。

SCNMovabilityHint

枚举指示 SceneKit 节点是否应随时间移动的值。

SCNNodeFocusBehavior

枚举 的 SCNNode可聚焦状态。

SCNParticleBirthDirection

枚举 由 SCNParticleSystem发出的粒子的初始方向。

SCNParticleBirthLocation

由 发出的粒子的初始位置的 SCNParticleSystem枚举。

SCNParticleBlendMode

枚举将呈现 由 SCNParticleSystem 发出的重叠粒子的方式。

SCNParticleEvent

由 发出的 SCNParticleSystem粒子的生命周期事件的枚举。 与 HandleEvent(SCNParticleEvent, NSString[], SCNParticleEventHandler) 一起使用。

SCNParticleImageSequenceAnimationMode

的播放模式 SCNParticleSystem的枚举,其粒子呈现为图像序列。

SCNParticleInputMode

枚举粒子属性在粒子生存期内如何 (动画处理,当粒子经过一段距离或基于另一个属性) 。 与 InputMode 一起使用。

SCNParticleModifierStage

枚举应应用 中指定的 AddModifier(NSString[], SCNParticleModifierStage, SCNParticleModifierHandler) 修饰符的时刻。

SCNParticleOrientationMode

枚举 发出的 SCNParticleSystem粒子的对齐方式。 与 OrientationMode 一起使用。

SCNParticleSortingMode

指定 发出的粒子呈现顺序的枚举。

SCNPhysicsBodyType

一个枚举, SCNPhysicsBody 指定 是动态、运动还是静态。 与 CreateBody(SCNPhysicsBodyType, SCNPhysicsShape) 一起使用。

SCNPhysicsCollisionCategory

的冲突属性的 SCNPhysicsBody默认值。

SCNPhysicsFieldScope

枚举值,指定 是 SCNPhysicsField 影响其边框内还是外部的对象。

SCNPhysicsSearchMode

枚举控制返回哪些物理搜索结果的值。

SCNPhysicsShapeType

的类别枚举 SCNPhysicsShape

SCNReferenceLoadingPolicy

枚举对象的可能加载策略 SCNReferenceNode

SCNRenderingApi

枚举表示 Metal 或 OpenGLES2 API 的值。

SCNSceneSourceStatus

枚举 SCNSceneSource 的状态。

SCNShadowMode

控制何时计算阴影的枚举。

SCNTessellationSmoothingMode

SceneKit 命名空间提供基于场景图的高级 3D 图形。

SCNTransparencyMode

枚举用于计算透明度的技术。

SCNWrapMode

枚举纹理包装技术。

委托

SCNActionNodeWithElapsedTimeHandler

与 一起使用的 CustomAction(Double, SCNActionNodeWithElapsedTimeHandler)完成处理程序。

SCNAnimationDidStartHandler

SceneKit 命名空间提供基于场景图的高级 3D 图形。

SCNAnimationDidStopHandler

SceneKit 命名空间提供基于场景图的高级 3D 图形。

SCNAnimationEventHandler

用于 的 Create(nfloat, SCNAnimationEventHandler)完成处理程序。

SCNBindingHandler

与 一起使用的 HandleBinding(String, SCNBindingHandler)完成处理程序。

SCNBufferBindingHandler

SceneKit 命名空间提供基于场景图的高级 3D 图形。

SCNFieldForceEvaluator

方法的 CustomField(SCNFieldForceEvaluator) 委托。

SCNNodeHandler

SceneKit 命名空间提供基于场景图的高级 3D 图形。

SCNNodePredicate

与 一起使用 EnumerateChildNodes(SCNNodePredicate)的委托。

SCNParticleEventHandler

用于 的 HandleEvent(SCNParticleEvent, NSString[], SCNParticleEventHandler)完成处理程序。

SCNParticleModifierHandler

在 中用作 的handlerAddModifier(NSString[], SCNParticleModifierStage, SCNParticleModifierHandler)委托。

SCNSceneExportProgressHandler

SceneKit 在导出场景时重复调用的延续处理程序。

SCNSceneSourceFilter

在场景中测试对象以包含的委托。

SCNSceneSourceStatusHandler

在执行 期间用于反映进度的 SceneFromOptions(SCNSceneLoadingOptions, SCNSceneSourceStatusHandler)回调。

SCNTransformConstraintHandler

调用 Create(Boolean, SCNTransformConstraintHandler)时使用的委托。

注解

场景工具包是基于分层场景图的 3D 图形框架。

场景工具包中的基本类是 SCNScene(保存所有内容)和 T:CoreGraphics.SceneKit.SCNViewUIView 呈现 SCNScene)。

具有 SCNSceneRootNode 类型的 SCNNode属性。 SCNNode的 具有 P:SceneKit.SCNNode.ChildNode并实现 System.Collections.Generic.IEnumerable`1<class MonoTouch.SceneKit.SCNNode>SCNNode的属性包括 Camera、类型 SCNCameraGeometry、类型SCNGeometryLight类型的 SCNLight

此外,每个都有SCNNode一个Position属性,该属性定义空间中相对于 SCNNode'和 P:SceneKit.SCNNode.FirstMaterialP:SceneKit.SCNNode.MaterialsSCNNode创建其外观ParentNode的位置。

以下示例演示了一个最小场景工具包视图:

public MySceneView (RectangleF frame) : base(frame)
{
	BackgroundColor = UIColor.Blue;
	this.Scene = new SCNScene ();

	var material = new SCNMaterial ();
	material.Diffuse.Contents = UIImage.FromFile("textureX.png");
	material.Specular.Contents = UIColor.Gray;
	material.LocksAmbientWithDiffuse = true;

	Scene.RootNode.Geometry = new SCNBox {
		Width = 1,
		Height = 1,
		Length = 1,
		ChamferRadius = 0.2f,
		FirstMaterial = material
	};

	Scene.RootNode.Light = new SCNLight {
		LightType = SCNLightType.Ambient,
		Color = UIColor.Gray,
	};

	var camera = new SCNCamera ();
	var cameraNode = new SCNNode () {
		Camera = camera,
		Position = new SCNVector3 (3, 3, 3),
		Constraints = new SCNConstraint[] { SCNLookAtConstraint.Create(Scene.RootNode) }
	};
	Scene.RootNode.AddChildNode (cameraNode);
}          

Geometry

SceneKit 中的所有几何图形都由 的 SCNGeometry子类描述:

SCNCapsule 带可调端盖的药丸形胶囊
SCNCone 可截断顶部的圆锥
SCNBox 矩形框。
SCNCylinder 一个柱形。
SCNFloor 一个无限平面,能够反映其上方的几何图形。
SCNPlane 单面矩形。
SCNPyramid 四面体。
SCNShape 已延伸到第三个维度的 2D 形状。
SCNSphere 一个球。
SCNText 延伸文本。
SCNTorus 圆环形状。
SCNTube 未盖面的柱面。

此外,SceneKit 可以从 加载整个场景。使用 方法的 FromFile DAE 文件。

最后,开发人员可以使用 M:SceneKit.SCNGeometryElement[]* (SceneKit.SCNGeometrySource[]、SceneKit.SCNGeometryElement[]* 方法 SCNGeometrySource 创建自定义 SCNGeometryElement 几何图形。 下面显示了如何创建自定义棱锥图:

//Lower-left
var a = new SCNVector3(-1, -1, 0);
//Upper-right
var b = new SCNVector3(1, 1, 0);

var halfX = (c.X + a.X) / 2;
var halfY = (c.Y + a.Y) / 2;
var halfZ = (c.Z + a.Z) / 2;

var b = new SCNVector3(a.X, c.Y, halfZ);
var d = new SCNVector3(c.X, a.Y, halfZ);
//Elevate the midpoint so that it's clearly a pyramid
var midPoint = new SCNVector3(halfX, halfY, halfZ + 1.0);

//The vertices of the geometry
var locs = new [] {
	a, b, c, d, midPoint
};
var locSource = SCNGeometrySource.FromVertices(locs);

//Note that this relies on the ordering of locs above
//and it defines triangles (could be triangle strips, etc.)
var indices = new [] {
	//Triangles are defined counter-clockwise!
	4, 1, 0,
	1, 4, 2,
	2, 4, 3,
	3, 4, 0
};


var idxArray = new byte[indices.Length][];
for(int i = 0; i < idxArray.Length; i++)
{
	idxArray[i] = BitConverter.GetBytes(indices[i]);
}
var idxData = NSData.FromArray(idxArray.SelectMany(id => id).ToArray());

//Note that this relies on indices defining triangles
var element = SCNGeometryElement.FromData(idxData, SCNGeometryPrimitiveType.Triangles, indices.Length / 3, sizeof(int));

//Normals are relative to geometry
var normals = new [] {
	new SCNVector3(0, 0, 1),
	new SCNVector3(0, 0, 1),
	new SCNVector3(0, 0, 1),
	new SCNVector3(0, 0, 1),
	new SCNVector3(0, 0, 1),
};;
var normSource = SCNGeometrySource.FromNormals(normals);

//These texture coords will cause the texture to wrap 
var txCoords = new [] {
	new CGPoint(-1, -1),
	new CGPoint(-1, 1),
	new CGPoint(1, 1),
	new CGPoint(1, -1)
};

var txCoordsSource = SCNGeometrySource.FromTextureCoordinates(txCoords);

var geometry = SCNGeometry.Create(new [] { locSource, normSource, txCoordsSource }, new [] { element });