SCNGeometrySource 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
提供与 SCNGeometryElements 一起定义 3D 对象的顶点数据。
[Foundation.Register("SCNGeometrySource", true)]
[ObjCRuntime.Introduced(ObjCRuntime.PlatformName.WatchOS, 3, 0, ObjCRuntime.PlatformArchitecture.All, null)]
[ObjCRuntime.Introduced(ObjCRuntime.PlatformName.iOS, 8, 0, ObjCRuntime.PlatformArchitecture.All, null)]
public class SCNGeometrySource : Foundation.NSObject, Foundation.INSSecureCoding, IDisposable
[Foundation.Register("SCNGeometrySource", true)]
[ObjCRuntime.Introduced(ObjCRuntime.PlatformName.WatchOS, 3, 0, ObjCRuntime.PlatformArchitecture.All, null)]
[ObjCRuntime.Introduced(ObjCRuntime.PlatformName.iOS, 8, 0, ObjCRuntime.PlatformArchitecture.All, null)]
[ObjCRuntime.Introduced(ObjCRuntime.PlatformName.MacOSX, 10, 8, ObjCRuntime.PlatformArchitecture.All, null)]
public class SCNGeometrySource : Foundation.NSObject, Foundation.INSSecureCoding, IDisposable
type SCNGeometrySource = class
inherit NSObject
interface INSCoding
interface INativeObject
interface IDisposable
interface INSSecureCoding
- 继承
- 属性
- 实现
注解
希望以编程方式生成自定义 SCNGeometry 对象的开发人员使用 M:SceneKit.SCNGeometry.Create (SceneKit.SCNGeometrySource[]、SceneKit.SCNGeometryElement[]* 方法。 对象的形式和数量 SCNGeometrySource 取决于开发人员描述几何图形的方式 (,例如,顶点数据是作为描述三角形的一系列三元组还是描述三角形带) 的移动序列,以及几何图形是简单地着色还是具有纹理贴图。
以下代码演示了创建自定义四面棱锥的自定义代码。 此示例演示如何使用顶点定义三角形,其中映射了单个纹理。 请注意如何使用 中的 locs
特定索引值定义 indices
,以及 中的 locs
排序如何影响 normals
和 txCoords
。 此外,请注意 中的 indices
三胞胎如何链接到 SCNGeometryPrimitiveType.Triangles
。
//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(0, 0),
new CGPoint(0, 1),
new CGPoint(1, 1),
new CGPoint(1, 0),
new CGPoint(0.5, 0.5)
};
var txCoordsSource = SCNGeometrySource.FromTextureCoordinates(txCoords);
var geometry = SCNGeometry.Create(new [] { locSource, normSource, txCoordsSource }, new [] { element });
构造函数
SCNGeometrySource() |
默认构造函数,初始化此类的新实例。 |
SCNGeometrySource(IntPtr) |
创建非托管对象的托管表示形式时使用的构造函数;由运行时调用。 |
SCNGeometrySource(NSCoder) |
从 unarchiver 对象中存储的数据初始化 对象的构造函数。 |
SCNGeometrySource(NSObjectFlag) |
在派生类上调用 的构造函数,以跳过初始化并仅分配 对象。 |
属性
BytesPerComponent |
基础矢量数据的大小(以字节为单位)。 |
Class |
提供与 SCNGeometryElements 一起定义 3D 对象的顶点数据。 (继承自 NSObject) |
ClassHandle |
此类的句柄。 |
ComponentsPerVector |
此源中每个矢量元素的组件数。 |
Data |
基础数据缓冲区。 |
DataOffset |
从 的开头 Data 到第一个顶点元素的距离(以字节为单位)。 |
DataStride |
中 Data顶点元素之间的字节数。 |
DebugDescription |
此对象的开发人员有意义的说明。 (继承自 NSObject) |
Description |
对象的说明,即 ToString 的 Objective-C 版本。 (继承自 NSObject) |
FloatComponents |
顶点组件数据是否由值构成 |
Handle |
处理指向非托管对象表示形式的 (指针) 。 (继承自 NSObject) |
IsDirectBinding |
提供与 SCNGeometryElements 一起定义 3D 对象的顶点数据。 (继承自 NSObject) |
IsProxy |
提供与 SCNGeometryElements 一起定义 3D 对象的顶点数据。 (继承自 NSObject) |
RetainCount |
返回对象的当前 Objective-C 保留计数。 (继承自 NSObject) |
Self |
提供与 SCNGeometryElements 一起定义 3D 对象的顶点数据。 (继承自 NSObject) |
Semantic |
对应于 SCNGeometrySourceSemantic 此源的值。 |
Superclass |
提供与 SCNGeometryElements 一起定义 3D 对象的顶点数据。 (继承自 NSObject) |
SuperHandle |
用于表示此 NSObject 基类中方法的句柄。 (继承自 NSObject) |
VectorCount |
基础 Data中的向量总数。 |
Zone |
提供与 SCNGeometryElements 一起定义 3D 对象的顶点数据。 (继承自 NSObject) |
方法
扩展方法
ObjectDidBeginEditing(NSObject, INSEditor) |
提供与 SCNGeometryElements 一起定义 3D 对象的顶点数据。 |
ObjectDidEndEditing(NSObject, INSEditor) |
提供与 SCNGeometryElements 一起定义 3D 对象的顶点数据。 |
GetValidModes(NSObject, NSFontPanel) |
提供与 SCNGeometryElements 一起定义 3D 对象的顶点数据。 |
ValidateToolbarItem(NSObject, NSToolbarItem) |
提供与 SCNGeometryElements 一起定义 3D 对象的顶点数据。 |
GetDebugDescription(INSObjectProtocol) |
提供与 SCNGeometryElements 一起定义 3D 对象的顶点数据。 |
AcceptsPreviewPanelControl(NSObject, QLPreviewPanel) |
提供与 SCNGeometryElements 一起定义 3D 对象的顶点数据。 |
BeginPreviewPanelControl(NSObject, QLPreviewPanel) |
提供与 SCNGeometryElements 一起定义 3D 对象的顶点数据。 |
EndPreviewPanelControl(NSObject, QLPreviewPanel) |
提供与 SCNGeometryElements 一起定义 3D 对象的顶点数据。 |
GetAccessibilityCustomRotors(NSObject) |
获取适用于 |
SetAccessibilityCustomRotors(NSObject, UIAccessibilityCustomRotor[]) |
设置适用于 |