Bagikan melalui


SCNGeometry.Create Metode

Definisi

Overload

Create()

Membuat elemen geometri baru.

Create(SCNGeometrySource[], SCNGeometryElement[])

Membuat objek geometri baru dari array sources dan elementsyang ditentukan.

Create()

Membuat elemen geometri baru.

[Foundation.Export("geometry")]
[ObjCRuntime.Introduced(ObjCRuntime.PlatformName.MacOSX, 10, 9, ObjCRuntime.PlatformArchitecture.All, null)]
public static SceneKit.SCNGeometry Create ();
static member Create : unit -> SceneKit.SCNGeometry

Mengembalikan

Atribut

Berlaku untuk

Create(SCNGeometrySource[], SCNGeometryElement[])

Membuat objek geometri baru dari array sources dan elementsyang ditentukan.

[Foundation.Export("geometryWithSources:elements:")]
public static SceneKit.SCNGeometry Create (SceneKit.SCNGeometrySource[] sources, SceneKit.SCNGeometryElement[] elements);
static member Create : SceneKit.SCNGeometrySource[] * SceneKit.SCNGeometryElement[] -> SceneKit.SCNGeometry

Parameter

sources
SCNGeometrySource[]

Array SCNGeometrySource objek.

elements
SCNGeometryElement[]

Array SCNGeometryElement objek.

Parameter ini dapat berupa null.

Mengembalikan

Atribut

Keterangan

Digunakan untuk membuat geometri kustom. Tergantung pada kebutuhan pengembang, jumlah dan jenis sources array dan elements dapat sangat bervariasi. Contoh berikut menunjukkan penggunaan simpul, menentukan segitiga, di mana satu tekstur dipetakan. Perhatikan bagaimana nilai indeks tertentu di dalam locs digunakan untuk menentukan indices dan bagaimana pengurutan di dalam locs mempengaruhi normals dan txCoords. Selain itu, perhatikan bagaimana kembung di ditautkan indices ke 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);

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

Berlaku untuk