SceneKit Namespace
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
O namespace SceneKit fornece gráficos 3D baseados em grafo de cena de alto nível.
Classes
_SCNShaderModifiers |
Um dicionário de snippets de sombreador. |
SCNAccelerationConstraint |
O namespace SceneKit fornece gráficos 3D baseados em grafo de cena de alto nível. |
SCNAction |
Executa ações em um SCNNode, incluindo alterações na aparência, geometria, animações ou funções arbitrárias. |
SCNActionable |
Permite que ações sejam aplicadas. |
SCNActionable_Extensions |
Métodos de extensão para a ISCNActionable interface para dar suporte a todos os métodos do SCNActionable protocolo. |
SCNAnimatable |
Permite que as animações sejam aplicadas. |
SCNAnimatable_Extensions |
Métodos de extensão para a ISCNAnimatable interface para dar suporte a todos os métodos do SCNAnimatable protocolo. |
SCNAnimatableExtensions |
Métodos de extensão para ISCNAnimatable. |
SCNAnimation |
O namespace SceneKit fornece gráficos 3D baseados em grafo de cena de alto nível. |
SCNAnimationEvent |
Executa uma função em um momento específico durante uma animação. |
SCNAnimationPlayer |
O namespace SceneKit fornece gráficos 3D baseados em grafo de cena de alto nível. |
SCNAudioPlayer |
Mantém um SCNAudioSource ou AVAudioNode para uso com áudio posicional. |
SCNAudioSource |
Uma fonte de áudio reutilizável para áudio posicional em cenas do SceneKit. |
SCNAvoidOccluderConstraint |
O namespace SceneKit fornece gráficos 3D baseados em grafo de cena de alto nível. |
SCNAvoidOccluderConstraintDelegate |
O namespace SceneKit fornece gráficos 3D baseados em grafo de cena de alto nível. |
SCNAvoidOccluderConstraintDelegate_Extensions |
Métodos de extensão para a ISCNAvoidOccluderConstraintDelegate interface para dar suporte a todos os métodos do SCNAvoidOccluderConstraintDelegate protocolo. |
SCNBillboardConstraint |
Restringe automaticamente um SCNNode para que ele sempre aponte para o nó de renderização atual. |
SCNBoundingVolume |
Funções que definem um volume no espaço 3D. |
SCNBox |
Um SCNGeometry cujos rostos são todos retângulos. |
SCNCamera |
Especifica uma câmera, com atributos como campo de exibição e profundidade de exibição. |
SCNCameraController |
O namespace SceneKit fornece gráficos 3D baseados em grafo de cena de alto nível. |
SCNCameraControllerDelegate |
O namespace SceneKit fornece gráficos 3D baseados em grafo de cena de alto nível. |
SCNCameraControllerDelegate_Extensions |
Métodos de extensão para a ISCNCameraControllerDelegate interface para dar suporte a todos os métodos do SCNCameraControllerDelegate protocolo. |
SCNCapsule |
Um SCNGeometry que é um cilindro com extremidades tampadas. |
SCNCone |
Um SCNGeometry que é um frusto circular. Ou um chapéu de festa. |
SCNConstraint |
Ajusta automaticamente a transformação de um nó. |
SCNCylinder |
Um SCNGeometry que é um cilindro circular direito. |
SCNDistanceConstraint |
O namespace SceneKit fornece gráficos 3D baseados em grafo de cena de alto nível. |
SCNErrorCodeExtensions |
Métodos de extensão para a enumeração SceneKit.SCNErrorCode. |
SCNFloor |
Um SCNGeometry que é um plano infinito. |
SCNGeometry |
Classe base para objetos geometria do SceneKit |
SCNGeometryElement |
Combina informações sobre vértices e um primitivo de desenho. Mapeia para um único comando de desenho enviado para a GPU. |
SCNGeometrySource |
Fornece dados de vértice que, em conjunto com SCNGeometryElements, definem um objeto 3D. |
SCNGeometrySourceSemantic |
Enumera atributos de modo de vértice. |
SCNGeometryTessellator |
O namespace SceneKit fornece gráficos 3D baseados em grafo de cena de alto nível. |
SCNHitTest |
Constantes para uso com o |
SCNHitTestOptions |
Opções de configuração para teste de ocorrência em SCNNode e SCNSceneRenderer |
SCNHitTestResult |
Informações sobre o SCNNode (se houver) localizado em um ponto específico ou ao longo de um raio. |
SCNIKConstraint |
Um SCNConstraint que aplica cinemática inversa. |
SCNJavaScript |
Classe estática que contém um método para exportar módulos JavaScript. |
SCNLayer |
O namespace SceneKit fornece gráficos 3D baseados em grafo de cena de alto nível. |
SCNLevelOfDetail |
Controla geometrias alternativas renderizadas em limites no espaço mundial ou no espaço de tela. |
SCNLight |
Uma fonte de luz, usada para todos os SCNLightTypes. |
SCNLightAttribute |
O namespace SceneKit fornece gráficos 3D baseados em grafo de cena de alto nível. |
SCNLightingModel |
Constantes para uso com a propriedade P:SceneKit.SCNMaterial.LightingModel , que define a maneira como luzes e materiais se combinam para produzir uma cor renderizada específica. |
SCNLightType |
Enumera os tipos de SCNLight. |
SCNLookAtConstraint |
Um SCNConstraint que orienta um nó a apontar para outro nó. |
SCNMaterial |
Especifica as características de iluminação e sombreamento da superfície de um SCNGeometry. |
SCNMaterialProperty |
Configura as várias propriedades (como cor e textura) de um SCNMaterial. |
SCNMorpher |
Uma transformação animada de um SCNGeometry em um ou mais objetos SCNGeometry de destino. |
SCNNode |
Um nó no grafo de cena. |
SCNNodeRendererDelegate |
Interface que define funções de objeto delegado para adicionar código de desenho OpenGL personalizado. |
SCNNodeRendererDelegate_Extensions |
Métodos de extensão para a ISCNNodeRendererDelegate interface para dar suporte a todos os métodos do SCNNodeRendererDelegate protocolo. |
SCNParticleProperty |
O namespace SceneKit fornece gráficos 3D baseados em grafo de cena de alto nível. |
SCNParticlePropertyController |
Anima uma propriedade das partículas emitidas por um SCNParticleSystem. |
SCNParticleSystem |
Emite pequenos sprites cujos comportamentos são especificados pelo desenvolvedor. |
SCNPhysicsBallSocketJoint |
Um SCNPhysicsBehavior que permite que dois objetos SCNPhysicsBody giram um ao redor do outro. |
SCNPhysicsBehavior |
Controla o comportamento de um ou mais objetos SCNPhysicsBody. |
SCNPhysicsBody |
Adiciona a simulação física a um SCNNode. |
SCNPhysicsConeTwistJoint |
O namespace SceneKit fornece gráficos 3D baseados em grafo de cena de alto nível. |
SCNPhysicsContact |
Como dois objetos SCNPhysicsBody estão em contato entre si. |
SCNPhysicsContactDelegate |
Delegar funções de objeto respondendo a toques entre SCNPhysicsBody objetos.. |
SCNPhysicsContactDelegate_Extensions |
Métodos de extensão para a ISCNPhysicsContactDelegate interface para dar suporte a todos os métodos do SCNPhysicsContactDelegate protocolo. |
SCNPhysicsContactEventArgs |
Fornece dados para o DidUpdateContact, E:SceneKit.SCNPhysicsContactEventArgs.DidEndContact e E:SceneKit.SCNPhysicsContactEventArgs.DidUpdateContact eventos. |
SCNPhysicsField |
Aplica forças a todos os objetos SCNPhysicsBody em um determinado volume. |
SCNPhysicsHingeJoint |
Um SCNPhysicsBehavior que anexa dois objetos SCNPhysicsBody ao longo de um único eixo. |
SCNPhysicsShape |
Um volume sólido para um SCNPhysicsBody. Usado na detecção de colisão. |
SCNPhysicsShapeOptions |
Chaves válidas para o |
SCNPhysicsShapeOptionsKeys |
Define chaves válidas para uso com o |
SCNPhysicsShapeOptionsTypes |
Tipo geométrico associado SCNPhysicsShapea s. |
SCNPhysicsSliderJoint |
Um SCNPhysicsBehavior que conecta dois objetos SCNPhysicsBody, permitindo que eles deslizem e girem em torno de seus pontos de conexão. |
SCNPhysicsTest |
Opções válidas para uso com M:SceneKit.SCNPhysicsWorld.ContactTest*. |
SCNPhysicsTestKeys |
Contém valores que controlam a pesquisa, o abate de backface e o teste de colisão. |
SCNPhysicsTestSearchModeKeys |
Enumera valores que controlam quais resultados da pesquisa de colisão são retornados. |
SCNPhysicsVehicle |
Um SCNPhysicsBehavior que simula a física de um veículo com rodas. |
SCNPhysicsVehicleWheel |
A aparência e as características físicas de uma roda em um SCNPhysicsVehicle. |
SCNPhysicsWorld |
Uma simulação de física que modela colisões e outras propriedades relacionadas à física em um SCNScene. |
SCNPlane |
Um SCNGeometry que é um plano finito retangular de lado único. |
SCNProgram |
Executa a renderização personalizada usando sombreadores escritos em OpenGL Shading Language. |
SCNProgramDelegate |
Objeto delegate para objetos SCNProgram. |
SCNProgramDelegate_Extensions |
Métodos de extensão para a ISCNProgramDelegate interface para dar suporte a todos os métodos do SCNProgramDelegate protocolo. |
SCNProgramSemanticOptions |
Define o MappingChannel para uso com SetSemantic(NSString, String, SCNProgramSemanticOptions). |
SCNPropertyControllers |
O namespace SceneKit fornece gráficos 3D baseados em grafo de cena de alto nível. |
SCNPyramid |
Um SCNGeometry que é uma pirâmide retangular direita. |
SCNReferenceNode |
Um SCNNode que carrega seu conteúdo de um arquivo de cena. |
SCNRenderer |
Renderiza um SCNScene em um contexto OpenGL. |
SCNRenderingArguments |
Define as chaves para uso com Render(SCNNode, SCNRenderer, NSDictionary) e SetSemantic(NSString, String, SCNProgramSemanticOptions). |
SCNRenderingOptions |
Um DictionaryContainer que define |
SCNReplicatorConstraint |
O namespace SceneKit fornece gráficos 3D baseados em grafo de cena de alto nível. |
SCNScene |
A descrição de nível mais alto de uma cena 3D. |
SCNSceneExportDelegate |
Protocolo que define métodos para manipular a exportação de uma cena para um arquivo. |
SCNSceneExportDelegate_Extensions |
Métodos de extensão para a ISCNSceneExportDelegate interface para dar suporte a todos os métodos do SCNSceneExportDelegate protocolo. |
SCNSceneLoadingOptions |
Opções para carregamento de cena. |
SCNSceneRenderer |
Classe de implementação da ISCNSceneRenderer interface . |
SCNSceneRenderer_Extensions |
Métodos de extensão para a ISCNSceneRenderer interface para dar suporte a todos os métodos do SCNSceneRenderer protocolo. |
SCNSceneRendererDelegate |
O objeto Delegate para a classe SCNRenderer define métodos que refletem eventos de renderização. |
SCNSceneRendererDelegate_Extensions |
Métodos de extensão para a ISCNSceneRendererDelegate interface para dar suporte a todos os métodos do SCNSceneRendererDelegate protocolo. |
SCNSceneSource |
Lê dados de definição de cena de um arquivo ou objeto NSData. |
SCNSceneSourceLoadErrors |
Enumera tipos de erro que podem ocorrer durante o carregamento SCNSceneSourcede s. |
SCNSceneSourceLoading |
Opções para criar e carregar objetos SCNScene. |
SCNSceneSourceProperties |
Chaves de metadados associadas a um arquivo de cena. Usado com GetProperty(NSString). |
SCNShadable |
Implementação de ISCNShadable. |
SCNShadable_Extensions |
Métodos de extensão para a ISCNShadable interface para dar suporte a todos os métodos do SCNShadable protocolo. |
SCNShaderModifiers |
Um DictionaryContainer que contém opções para sombreadores. |
SCNShape |
Um SCNGeometry criado a partir de um caminho 2D, opcionalmente extrudado em três dimensões. |
SCNSkinner |
Acessa o grafo de cena em suporte à animação esquelética. |
SCNSliderConstraint |
O namespace SceneKit fornece gráficos 3D baseados em grafo de cena de alto nível. |
SCNSphere |
Um SCNGeometry que é uma esfera. |
SCNTechnique |
Fornece passagens de desenho adicionais, cada uma das quais aplica um sombreador. |
SCNTechniqueSupport |
A implementação de ISCNTechniqueSupport que simplesmente contém uma referência ao SCNTechnique. |
SCNText |
Um SCNGeometry baseado em uma cadeia de caracteres, opcionalmente extrudado em três dimensões. |
SCNTimingFunction |
O namespace SceneKit fornece gráficos 3D baseados em grafo de cena de alto nível. |
SCNTorus |
Um SCNGeometry que é um sólido em forma de anel. |
SCNTransaction |
Permite que um conjunto de modificações seja aplicado atomicamente. |
SCNTransformConstraint |
Um SCNConstraint que executa uma função que especifica uma alteração na transformação (posição, rotação e escala) em um nó ou nós. |
SCNTube |
Um SCNGeometry que é um cilindro com um buraco ao longo de seu eixo central. |
SCNView | |
SCNView.SCNViewAppearance |
Classe de aparência para objetos do tipo SCNView. |
Estruturas
SCNMatrix4 |
Uma matriz 4x4. |
SCNQuaternion |
Representa um quatérnion e contém métodos que operam neles. |
SCNVector3 |
Um vetor de três componentes. |
SCNVector4 |
Um vetor de 4 componentes. |
Interfaces
ISCNActionable |
Interface que representa os métodos necessários (se houver) do protocolo SCNActionable. |
ISCNAnimatable |
Interface que representa os métodos necessários (se houver) do protocolo SCNAnimatable. |
ISCNAnimationProtocol |
O namespace SceneKit fornece gráficos 3D baseados em grafo de cena de alto nível. |
ISCNAvoidOccluderConstraintDelegate |
Interface que representa os métodos necessários (se houver) do protocolo SCNAvoidOccluderConstraintDelegate. |
ISCNBoundingVolume |
Interface que representa os métodos necessários (se houver) do protocolo SCNBoundingVolume. |
ISCNBufferStream |
Interface para gerenciar o buffer de Metal de um sombreador personalizado. |
ISCNCameraControlConfiguration |
O namespace SceneKit fornece gráficos 3D baseados em grafo de cena de alto nível. |
ISCNCameraControllerDelegate |
Interface que representa os métodos necessários (se houver) do protocolo SCNCameraControllerDelegate. |
ISCNNodeRendererDelegate |
Interface que representa os métodos necessários (se houver) do protocolo SCNNodeRendererDelegate. |
ISCNPhysicsContactDelegate |
Interface que representa os métodos necessários (se houver) do protocolo SCNPhysicsContactDelegate. |
ISCNProgramDelegate |
Interface que representa os métodos necessários (se houver) do protocolo SCNProgramDelegate. |
ISCNSceneExportDelegate |
Interface que representa os métodos necessários (se houver) do protocolo SCNSceneExportDelegate. |
ISCNSceneRenderer |
Interface que representa os métodos necessários (se houver) do protocolo SCNSceneRenderer. |
ISCNSceneRendererDelegate |
Interface que representa os métodos necessários (se houver) do protocolo SCNSceneRendererDelegate. |
ISCNShadable |
Interface que representa os métodos necessários (se houver) do protocolo SCNShadable. |
ISCNTechniqueSupport |
Interface que representa os métodos necessários (se houver) do protocolo SCNTechniqueSupport. |
Enumerações
SCNActionTimingMode |
Enumera as curvas de taxa para uso com SCNAction objetos. |
SCNAnimationImportPolicy |
Enumera políticas de importação de animação. |
SCNAntialiasingMode |
Enumera valores que controlam o comportamento de suavização. |
SCNBillboardAxis |
Enumeração de bloqueios de eixos disponíveis para nós restritos por SCNBillboardConstraint. |
SCNBlendMode |
Enumeração das maneiras pelas quais o SceneKit pode mesclar cores de um material com cores que já existem no destino de renderização. |
SCNBufferFrequency |
Enumera valores que controlam se os manipuladores são invocados por quadro, por nó por quadro ou por nó por quadro por renderizável sombreado. |
SCNCameraProjectionDirection |
O namespace SceneKit fornece gráficos 3D baseados em grafo de cena de alto nível. |
SCNChamferMode |
Enumera as maneiras como um SCNShape pode ser chamfered; em sua frente, para trás ou ambos os lados. |
SCNColorMask |
O namespace SceneKit fornece gráficos 3D baseados em grafo de cena de alto nível. |
SCNCullMode |
Enumeração determinando quais faces de uma superfície SCNMaterial são renderizadas. |
SCNDebugOptions |
Enumera as opções de sobreposição de depuração. |
SCNErrorCode |
O namespace SceneKit fornece gráficos 3D baseados em grafo de cena de alto nível. |
SCNFillMode |
O namespace SceneKit fornece gráficos 3D baseados em grafo de cena de alto nível. |
SCNFilterMode |
Enumeração de modos de filtragem de textura. |
SCNGeometryPrimitiveType |
Enumeração de primitivos de geometria 2D. |
SCNGeometrySourceSemantics |
Enumera semântica para dados de geometria. |
SCNHitTestSearchMode |
O namespace SceneKit fornece gráficos 3D baseados em grafo de cena de alto nível. |
SCNInteractionMode |
O namespace SceneKit fornece gráficos 3D baseados em grafo de cena de alto nível. |
SCNMorpherCalculationMode |
Enumeração de fórmulas de interpolação válidas para CalculationMode. |
SCNMovabilityHint |
Enumera valores que informam ao SceneKit se os nós devem ser movidos ao longo do tempo. |
SCNNodeFocusBehavior |
Enumera os estados focalizáveis de um SCNNode. |
SCNParticleBirthDirection |
Enumera a direção inicial das partículas emitidas por um SCNParticleSystem. |
SCNParticleBirthLocation |
Enumeração do local inicial das partículas emitidas por um SCNParticleSystem. |
SCNParticleBlendMode |
A enumeração das maneiras pelas quais as partículas sobrepostas emitidas por um SCNParticleSystem serão renderizadas. |
SCNParticleEvent |
Enumeração de eventos de ciclo de vida para partículas emitidas por um SCNParticleSystem. Usado com HandleEvent(SCNParticleEvent, NSString[], SCNParticleEventHandler). |
SCNParticleImageSequenceAnimationMode |
Enumeração de modos de reprodução para SCNParticleSystemcujas partículas são renderizadas como uma sequência de imagens. |
SCNParticleInputMode |
Enumera como uma propriedade de partícula é animada (ao longo da vida útil da partícula, à medida que a partícula viaja a uma distância ou com base em outra propriedade). Usado com InputMode. |
SCNParticleModifierStage |
Enumera momentos em que o modificador especificado em AddModifier(NSString[], SCNParticleModifierStage, SCNParticleModifierHandler) deve ser aplicado. |
SCNParticleOrientationMode |
Enumera o alinhamento de partículas emitidas por um SCNParticleSystem. Usado com OrientationMode. |
SCNParticleSortingMode |
Enumeração que especifica a ordem na qual as partículas emitidas por um T:SceneKit.SCNParticleScene são renderizadas. |
SCNPhysicsBodyType |
Uma enumeração que especifica se o SCNPhysicsBody é dinâmico, cinemático ou estático. Usado com CreateBody(SCNPhysicsBodyType, SCNPhysicsShape). |
SCNPhysicsCollisionCategory |
Padrões para as propriedades de colisão de um SCNPhysicsBody. |
SCNPhysicsFieldScope |
Enumera valores que especificam se um SCNPhysicsField afeta objetos dentro ou fora de sua borda. |
SCNPhysicsSearchMode |
Enumera valores que controlam quais resultados da pesquisa de física são retornados. |
SCNPhysicsShapeType |
Enumeração de categorias para SCNPhysicsShapes. |
SCNReferenceLoadingPolicy |
Enumera possíveis políticas de carregamento para SCNReferenceNode objetos. |
SCNRenderingApi |
Enumera valores que significam as APIs Metal ou OpenGLES2. |
SCNSceneSourceStatus |
Enumera os estados de um SCNSceneSource. |
SCNShadowMode |
Controle de enumeração quando sombras são calculadas. |
SCNTessellationSmoothingMode |
O namespace SceneKit fornece gráficos 3D baseados em grafo de cena de alto nível. |
SCNTransparencyMode |
Enumera técnicas para calcular a transparência. |
SCNWrapMode |
Enumera técnicas de disposição de textura. |
Delegados
Comentários
O Kit de Cena é uma estrutura para gráficos 3D, com base em grafos de cena hierárquicos.
As classes fundamentais no Kit de Cena são SCNScene, que contém todo o conteúdo e T:CoreGraphics.SceneKit.SCNView, um UIView que renderiza um SCNScene.
Um SCNScene tem uma RootNode propriedade do tipo SCNNode. SCNNode's têm P:SceneKit.SCNNode.ChildNodes e implementam System.Collections.Generic.IEnumerable`1<class MonoTouch.SceneKit.SCNNode>
. As propriedades de SCNNode incluem Camera, do tipo SCNCamera, Geometry, do tipo SCNGeometrye Light, do tipo SCNLight.
Além disso, cada SCNNode tem uma Position propriedade que define um local no espaço em relação a SCNNodes ParentNode e P:SceneKit.SCNNode.FirstMaterial e P:SceneKit.SCNNode.Materials que criam a SCNNodeaparência do .
O exemplo a seguir mostra uma exibição mínima do Kit de Cena:
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
Toda a geometria no SceneKit é descrita por subclasses de SCNGeometry:
SCNCapsule | Uma cápsula em forma de pílula com tampas finais ajustáveis | |
SCNCone | Um cone cuja parte superior pode ser truncada | |
SCNBox | Uma caixa retangular. | |
SCNCylinder | Um cilindro. | |
SCNFloor | Um plano infinito com a capacidade de refletir a geometria acima dele. | |
SCNPlane | Um retângulo unilateral. | |
SCNPyramid | Um tetraedro. | |
SCNShape | Uma forma 2D que foi extrudada na 3ª dimensão. | |
SCNSphere | Uma bola. | |
SCNText | Texto extrudado. | |
SCNTorus | Uma forma de rosca. | |
SCNTube | Um cilindro sem tampa. |
Além disso, o SceneKit pode carregar cenas inteiras de . Arquivos DAE com o FromFile método .
Por fim, os desenvolvedores podem criar geometria personalizada usando o M:SceneKit.SCNGeometry.Create(SceneKit.SCNGeometrySource[], SceneKit.SCNGeometryElement[]* com matrizes de objetos e SCNGeometryElement apropriadosSCNGeometrySource. O seguinte mostra a criação de uma pirâmide personalizada:
//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 });