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

iOS3D

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for xissburg xissburg
March 19, 2012
120

 iOS3D

Desenvolvimento de Aplicações 3D para iOS

Avatar for xissburg

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