Upgrade to Pro — share decks privately, control downloads, hide ads and more …

iOS3D

xissburg
March 19, 2012
100

 iOS3D

Desenvolvimento de Aplicações 3D para iOS

xissburg

March 19, 2012
Tweet

Transcript

  1. Conteúdo • Pra que 3D? • Como renderizar gráficos 3D

    • Criação de conteúdo 3D • Engines 3D para iOS
  2. Como renderizar em 3D • Utilizamos o OpenGL ES para

    desenhar objetos 3D • Desenhamos malhas de triângulos em 3 dimensões • Podemos projetar uma imagem sobre a malha, conhecida como textura • Vertex Shaders podem deformar a malha na GPU • Fragment Shaders nos permite obter efeitos de materiais e iluminação
  3. Criação de conteúdo 3D • Podemos criar objetos 3D utilizando

    editores como 3dsMax, Maya, Blender, ZBrush, Softimage, etc • Em geral, o objeto é composto de uma malha de triângulos e uma ou mais texturas
  4. Criação de conteúdo 3D • Malhas deformáveis como personagens devem

    usar um esqueleto para fazer a deformação em um Vertex Shader • Um Fragment Shader pode ser usado para obter um efeito realista das propriedades ópticas do material do qual o objeto é composto • Em seguida um exemplo dos passos...
  5. Unity3D • Possui um editor de cenas • Faz o

    desenvolvedor se focar na lógica de sua aplicação • Programação de comportamento de entidades em javascript e C# • Difícil integração com UIKit
  6. cocos3d • Extensão 3D do cocos2d • Fácil de aprender

    para quem já conhece o cocos2d • Suporta Collada e PowerVR POD • Feito sobre OpenGL ES 1.1, portanto não suporta shaders, por enquanto
  7. iSGL3D • Suporte a shaders • Suporte nativo ao Bullet

    Physics Engine • Suporta apenas PowerVR POD • Arquitetura interessante, projeto bastante promissor • Licença MIT
  8. NinevehGL • Tem como princípio a simplicidade • Ainda em

    versão beta • Versão 1.0.0 free e open-source deve estar disponível no fim deste ano
  9. NinevehGL - (void)loadView { ! NGLView *nglView = [[NGLView alloc]

    initWithFrame:[[UIScreen mainScreen] bounds]]; ! nglView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; ! nglView.delegate = self; ! ! self.view = nglView; }
  10. NinevehGL - (void)viewDidLoad { ! [super viewDidLoad]; ! ! NSDictionary

    *settings = [NSDictionary dictionaryWithObjectsAndKeys: ! ! ! ! ! ! ! kNGLMeshCentralizeYes, kNGLMeshKeyCentralize, ! ! ! ! ! ! ! @"0.3", kNGLMeshKeyNormalize, ! ! ! ! ! ! ! nil]; ! ! _mesh = [[NGLMesh alloc] initWithFile:@"cube.obj" settings:settings delegate:nil]; ! ! _camera = [[NGLCamera alloc] initWithMeshes:_mesh, nil]; ! [_camera autoAdjustToScreen:YES animated:YES]; ! ! [[NGLDebug debugMonitor] startWithView:(NGLView *)self.view]; }
  11. Conclusão • Para se ter os benefícios do 3D em

    tempo-real é necessário um esforço maior • Atualmente existem diversos bons engines 3D para iOS • Porém, dependendo do caso, pode ser melhor utilizar OpenGL ES puro