Criando arte de jogos 3D para iphone com unity [1 ed.] 9788535253726, 9780240815633

Revolutionize your iPhone and iPad game development with Unity iOS, a fully integrated professional application and powe

645 102 5MB

Portuguese Pages 273 [264] Year 2012

Report DMCA / Copyright

DOWNLOAD FILE

Polecaj historie

Criando arte de jogos 3D para iphone com unity [1 ed.]
 9788535253726, 9780240815633

Citation preview

Criando

Artes de Jogos 3D para iPhone com Unity

Usando modo® e Blender na linha de producao Wes McDermott

CAMPUS

© Focal Press

Cadastre-se em www.elsevier.com.br para conhecer nosso catalogo completo, ter acesso a servigos exclusivos no site e receber informagoes sobre nossos langamentos e promogoes.

Wes McDermott

Criando

Arte de Jogos 3D para iPhone com Unity Traducao Edson Furmankiewicz

EDITOR DA SERIE M EDIA TECHNOLOGY Bruno Feijo MPhil, DIC. PhD Departamento de Mormatica. CTC/PUC-Rio

CAM PUS ELSEV IER

MEDIA TECHNOLOGY

0

©

unity

Do original: Creating 3D Game Art for the iPhone''1 with Unity Tradugao autorizada do idioma ingles da edigao publicada por Focal Press Copyright © 2011, by Elsevier Inc. ©2012, Elsevier Editora Ltda. Todos os direitos reservados e protegidos pela Lei na 9.610, de 19/02/1998. Nenhuma parte deste livro, sem autorizagao previa por escrito da editora, podera ser reproduzida ou transmitida sejam quais forem os meios empregados: eletronicos, mecanicos, fotograficos, gravagao ou quaisquer outros.

Copidesque: Ivone Teixeira Revisao: Jayme Teotonio Borges Luiz e Cynthia Gaudard Editoragao Eletronica: Estudio Castellani Elsevier Editora Ltda. Conhecimento sem Fronteiras Rua Sete de Setembro, 111 - 16* andar 20050-006 - Centro - Rio de Janeiro - R J - Brasil

M A a a tA Dt Dffoios r h w x w Ahcos

° DIRFXV0

Rua Quintana, 753 - 8* andar 04569-011 - Brooklin - Sao Paulo - S P - Brasil Servigo de Atendimento ao Cliente 0800-0265340 [email protected]

ISBN 978-85-352-5372-6 Edigao original: ISBN: 978-0-240-81563-3

Nota: Muito zelo e tecnica foram empregados na edigao desta obra. No entanto, podem ocorrer erros de digitagao, impressao ou duvida conceitual. Em qualquer das hipoteses: solicitamos a comunicagao ao nosso Servigo de Atendimento ao Cliente, para que possamos esclarecer ou encaminhar a questao. Nem a editora nem o autor assumem qualquer responsabilidade por eventuais danos ou perdas a pessoas ou bens, originados do uso desta publicagao.

CIP-Brasil. Catalogagao-na-fonte Sindicato Nacional dos Editores de Livros, R J M429c

McDermott, Wes Criando arte de jogos 3D para iphone com unity [recurso eletronico]: usando modo e blender na linha de produgao / Wes Mcdermott; tradutor Edson Furmankiewicz. - Rio de Janeiro : Elsevier, 2011. recurso digital : 24 cm Tradugao de: Creating 3D game art for the iphone with unity Formato: PDF Requisitos do sistema: Adobe Acrobat Reader Modo de acesso: World Wide Web Anexos ISBN 978-85-352-5372-6 (recurso eletronico) 1. iPhone (Smartphone). 2. Jogos por celular. 3. Unity (Programa de computador). 4. Blender (Programa de computador). 5. Sistema de indicagao visual tridimensional. 6. Livros eletronicos. I.Tftulo.

11-5925.

CDD: 005.1 CDU: 004

Sumario Dedicatoria

ix

Agradecimentos

ix

Prologo: Thump'n Noggins Por que focar os jogos para iPhone, iPad e Unity iOS?

xi xi

Pre-requisitos: O que devo saber?

xiii

Entrando nos principios fundamentais

xv

Conhe^a o"Tater"

xvi

Recursos do livro

xvii

A aventura comeqa...

xvii

C a p itu lo 1

Conhecendo o hardware do iDevice e o Unity iOS Hardware do iDevice

1 2

CPU AR

2

GPU

7

Determinando o orgamento do jogo

15

Orgamento da velocidade de projegao

16

Orqamento da renderizagao

17

Recapitulaqao

17

Resumo

18

Capitulo 2 Criando objetos do jogo com o modo

19

Planejando o orgamento de vertices

20

Testando o desempenho Avaliando as coisas

20 24

Oqueeuma unidade de jogo

25

Configurando o modo

25

Importando para o Unity iOS

28

Verdadeira contagem de vertices

29

Triangulos degenerados

30

Angulos de suavizagao

30

Costuras UV

30

Usando luzes

31

Modelando o Tater e a Thumper

32

Meu fluxo de trabalho

33

Criando a geometria

34 v

Criando arte de jogos 3D para iPhone com Unity

Reduzindo a geometria Resumo Capitulo 3 Entendendo texturas e mapas UV Criando mapas UV

41 41

Planejando seus mapas UV

42

Criando UVs para o Tater

44

Criando UVs para a Thumper

46

Fundamentos das texturas do jogo

50

Formatos da textura

50

Tamanhodatextura

50

Compressao da textura: PVRTC

53

Usando mapas Mip

55

Resolugoes multiplas

55

Orgamento de texturas

55

Criando o mapa difuso

57

Imitandoluzesombra

57

Texturizando o Tater

58

Resumo Capitulo 4 Criando objetos do jogo com o modo Design de nivel Criando um estilo Revendo o batching Criando o nivel

64

65 65 67 71 74

Determinando a contagem de vertices

74

Usando o atlas de texturas

76

Construindo na grade Texturizando o nivel

77 86

Medindo a cena

86

Criando as texturas

86

Criando UVs

87

Resumo Capitulo 5 Animagao usando o Blender Correspondendo o tamanho do objeto Suporte Blender do Unity iOS e fluxo de trabalho FBX Usando oFBX Entendendo as malhas de pele no Unity iOS vi

37 40

89

91 92 94 95 96

Criando arte de jogos 3D para iPhone com Unity

Revestimento otimizado pelo VFP Movimento de camera em torno do Tater no Blender

96 99

Os principios basicos do movimento de camera do iPhone e do iPad 99 Criando o esqueleto basico

102

Pintando pesos

114

Resumo Capitulo 6 Animagao usando o Blender

117

119

Completando o rig: adicionando cinematica inversa

119

Configurando a cinematica inversa das pernas

124

Configurando a cinematica inversa para os braqos

131

Arrumando as coisas

135

Animando o Tater

139

Usando oFBX

140

Como os dados de animagao funcionam no Unity iOS

142

Animagao no Blender Resumo Capitulo 7 Animagao usando o Blender Sistema deanimagao do Unity

143 152

155 156

Rota 1

157

Rota 2

157

Criando anim ates com o NLA Editor do Blender

158

Mesclando anim ates no Unity iOS Usando a dinamica do Blender para animar objetos Configurando a dinamica dos corpos rigidos no Blender Resumo Capitulo 8 Criando mapas de luz usando o Beast Mapeamento de luz do Beast

165 169 170 185

187 189

Beast eHDR

190

UVs corretas de mapa de luz

190

Gere as UVs automaticamente

192

O processo

192

Usando mapas de luz duais

198

Configuragoes do Beast

200

Ajustando mapas de luz Resumo

203 209

vii

Criando arte de jogos 3D para iPhone com Unity

Capitulo 9 Trabalhando com os recursos do jogo no Unity iOS Prefabs Criando um Prefab para os acessorios do ambiente

211 212 212

Prefab do alvo

212

Kit de controle da camera

214

Configurando colisores Compressao da textura Mapas Mip Shaders otimizados Usando a fisica no Unity iOS

215 218 218 220 221

Configurando o objeto-alvo

223

Adicionando particulas

226

Otimizagao da fisica usando oTime Manager

228

Publicando seu jogo

228

Player Settings

228

Otimizando seu jogo

231

Ajustando o desempenho do loop principal

231

Internal Profiler

232

Resumo

233

Recursos de bonus

235

Criando o terreno baldio de treinamento do Tater

237

Indice

251

viii

Dedicatoria A minha esposa Ann Marie, a minha filha Abby e ao meu filho Logan.

A gradecim entos Ao meu Senhor e Salvador Jesus Cristo, obrigado pelas bengaos e oportunidades. Sem o Senhor, nao posso fazer nada. A minha esposa Ann Marie, a minha filha Abby e ao meu filho Logan, agradego pelo seu incentivo, apoio e paciencia nas longas noites e fins de semana em que eu trabalhava neste livro. Amo voces! Uma pessoa sozinha nao consegue escrever um livro. Varias pessoas incriveis e talentosas forneceram informagoes, ajuda e apoio durante todo o processo. Para elas, meus sinceros agradecimentos. A Oleg Pridiuk, editor tecnico do livro, por sua contribuigao tecnica e experiencia no ramo, que foram um recurso incrivel para o livro. Eu nao teria conseguido sem a sua ajuda! Estou muito feliz por voce ter estado nesta jornada. Tambem gostaria de agradecer a varios membros integrantes da equipe Unity, Paulius Liekis, Alexey Orlov, Renaldas Zioma, Tom Higgins e David Helgason, por seu apoio generoso e informagoes tecnicas, bem como a todos os outros na Unity Technologies. Voces gostam do que fazem, acreditam em seu produto e ele realmente demonstra isso. Este langamento da Unity e incri'vel e foi otimo escrever sobre um aplicativo incrivel. A Warner McGee, que forneceu a incrivel ilustragao do Tater, foi sensacional colaborar com voce neste projeto! Seu trabalho nunca deixa de me surpreender e agradego pela dedicagao ilustrando oTater. A Efraim Meulenberg (Tornado Twins), que gentilmente forneceu um rig de controle de camera da UnityPrefabs.com. Voce foi rapido em dar uma maozinha para um colega desenvolvedor e com quem sempre e divertido conversar. Estimo muito o seu apoio! A Bob Berkebile, cujo Sistema de Animagao ITween forneceu uma solugao rapida e facil para o aplicativo demo do livro. Obrigado por dar uma ajuda na codificagao. A Thomas Rauscher, o criador do Pano2VR, obrigado por fornecer uma copia do Pano2VR para o livro. Gostei muito! A Yazan Malkosh, obrigado por seu apoio a este projeto. Voce e um artista 3D incrivel, cujo trabalho sempre admirei. A Bob Bennet, da Luxology, e a toda a equipe de desenvolvimento do modo, voces apoiaram minha redagao - valorizo muito isso! Continuem tornando o modo impressionante!

Criando arte de jogos 3D para iPhone com Unity

Obrigado a todos os meus amigos e familiares que sempre me apoiaram, assim como a todos os artistas maravilhosos que conheci on-line via Twitter e outros meios de comunicagao sociais, seu apoio ajudou a me manter neste projeto. Finalmente, agradego a voce, leitor, por comprar este livro. Espero que goste e que ele o ajude a entender melhor a criagao do conteudo 3D para o iPhone e desenvolvimento iPad utiiizando o Unity iOS.

x

Prologo: Thump'n Noggins Como artista 3D, voce vai se deparar com inumeras oportunidades e caminhos a serem explorados dentro de diferentes ramos de trabalho. As habilidades de um artista 3D sao usadas em efeitos visuais, anim ates graficas, impressao, arquitetura, medicina e, claro, jogos, para citar alguns.Trabalho como artista 3D ha mais de 11 anos e sempre houve mais de um generalista 3D trabalhando em video, impressao e multimidia. De todos os diferentes tipos de projetos nos quais participei, a criagao de graficos 3D interativos tem sido, de longe, a mais divertida. Comecei criando conteudo de treinamento interativo no meu trabalho fixo usando o Flash. Precisando produzir um treinamento mais complexo utiiizan­ do o conteudo 3D, comecei a usar o XNA Game Studio da Microsoft. Foi muito gratificante construir o conteudo 3D e, entao, ser capaz de dar-lhe vida, por assim dizer, atraves da interagao com o conteudo em um ambiente de jogo. Para mim, foi muito mais gratificante do que apenas renderizar uma animagao. Com os jogos, pude criar animagoes e programar cenarios nos quais um usuario poderia interagir com o meu conteudo em tempo real. Fiquei viciado! Li toneladas de livros de arte para jogos na minha vida e cada um sem­ pre me deixou com muitas perguntas. A maioria dos livros de arte para jogos analisa os cenarios tipicos da construgao de objetos com poucos poligonos, a criagao de mapas normais, e assim por diante. Mas nunca esses livros falaram o porque. Para manter uma abordagem generalista, eles omitem o aspecto mais importante da criaqao do conteudo em tempo real, que e como o conteudo 3D especificamente se relaciona com um mecanismo de jogo especifico. A arte 3D e tecnica e a criagao de jogos 3D e ainda mais tecnica. Acho que nao se pode realmente falar sobre a criagao de conteudo de jogos 3D sem uma analise aprofundada de como ela se relaciona com o mecanismo do jogo e o hardware para o qual o conteudo se destina, e e isso que considero ser o prin­ cipal poder deste livro. A diferenga fundamental entre este livro e um tipico li­ vro de arte para jogos e que teremos uma visao profunda da criagao de modelos, texturas e animagao de jogos, a fim de que sejam devidamente otimizados para um mecanismo e hardware de jogo especifico no qual serao executados. Nosso foco neste livro e a criagao de recursos de jogo para uso no Unity iOS, que foi criado pela Unity Technologies para criar jogos a serem implementados em todos os iDevices da Apple, tais como o iPhone, o iPod Touch e o iPad.

Por que focar os jo g o s para iPhone, iPad e U nity iO S? Acho incrivel que agora existam tantas maneiras de comegar seu trabalho, ou seja, o jogo, mostradas e dispomveis para o publico em massa. Os dois mercados que tem cativado meus interesses ao longo dos ultimos anos sao o Xbox LIVE Indie Games e o App Store da Apple. Meu primeiro interesse no desenvolvimento de jogos independentes foi atra­ ves do Xbox LIVE Indie Games, que usa o XNA Game Studio da Microsoft. Mas xi

Criando arte de jogos 3D para iPhone com Unity

sendo mais orientado para a arte, descobri que a codificagao de jogos usando o XNA pode ser um processo lento e bastante dificil de entender. Como desenvolvedor multimi'dia, estou muito familiarizado com a programagao em termos de linguagens de script, tais como Flash ActionScript, JavaScript e Python. O Unity iOS oferece a solugao perfeita no sentido de que voce obtem um ambiente totalmente 3D semelhante aos aplicativos 3D para construir as cenas de forma facil e artistica, bem como a capacidade de codificar os jogos em uma linguagem de script, como JavaScript. O Unity iOS permite que eu me concentre em meus pontos fortes, que e o lado artistico do desenvolvimento de jogos, e ainda seja capaz de codificar e criar uma experiencia envolvente e interativa. E o melhor dos dois mundos, fundidos em um aplicativo construido a partir do zero para o desenvolvi­ mento rapido de jogos. O Unity tambem tem a capacidade de publicar jogos em diversas plataformas, tais como Wii, iPhone e iPad, Android, desktop e Web, e com o Unity 3.0, tambem existe suporte para o Xbox 360 e o PS3. Por exemplo, com o Unity, e preciso pouco esforgo para portar seu jogo do iPhone para outra plataforma, como a Web. 0 Unity tambem suporta os principals pacotes de animagao 3D e formatos populares, como o FBX. Como artista, acho que o Unity e uma ferramenta indispensavel para a criagao do conteudo 3D interativo e e meu mecanismo de jogo preferido devido a sua facilidade de uso e ao conjunto de ferramentas util e apropriado para artistas. Um mecanismo de jogo como o Unity precisa do hardware para rodar e, como mencionado, o Unity iOS sera executado em varias plataformas de hardware, principalmente nos iDevices da Apple, como o iPhone, o iPod Touch e o iPad. Os iDevices da Apple oferecem um sistema operacional elegante, referido como iOS, e fornecem um padrao coerente para o desenvolvimento em todas as suas pla­ taformas. Tem-se dito que a Apple insiste em manter um rigido controle em seu hardware, e o SO contribui para um produto inferior, mas como desenvolvedor de jogos sinto que esse ambiente fechado acaba com a "adivinhagao" de como meu jogo particular rodara na plataforma. Com o iOS, ha muitos dispositivos que meu jogo pode visar e, embora o hardware interno entre os dispositivos, tais como o iPhone e o iPad, seja diferente, na maioria das vezes o hardware fornece um padrao em termos de desenvolvimento para os dispositivos iOS, o que torna facil visar as otimizagoes e construir jogos que sao executados em cada platafor­ ma com pouco esforgo. Agora, quando novas geragoes de dispositivos, como o iPhone 4, forem disponiveis, o hardware certamente ira mudar e tornar-se mais poderoso. Assim, o numero de geragoes de dispositivo que voce deseja suportar com o seu jogo vai ditar o nivel de complexidade do suporte em termos de construgao do conteudo otimizado bem executado em todos os iDevices. 0 iOS da Apple nao so oferece um ambiente padronizado, mas tambem vem com o suporte de um mercado massivo. Com a invengao do App Store, a Apple estabeleceu um mercado de massa para que os desenvolvedores publiquem e vendam o conteudo, continuando a se expandir rapidamente a cada dia. Na epoca em que eu escrevia este texto, havia mais de 250 mil aplicativos disponiveis e mais de 5 bilhoes de downloads. Alem disso, a Apple ja pagou mais de 1 bilhao de dolares para os desenvolvedores. Existem mais de 1.000 jogos com tecnologia Unity disponiveis no App Store, e esse numero continua a crescer rapidamente.

Escrevendo codigo com o Unity O Unity tambem suporta o C#, bem como as linguagens JavaScript. Se voce ja usou o C# com oXNA Game Studio, migrar para o Unity ser3 moleza. Nao importa o nivel de experiencia de programagao que lenha, o Unity tem algo para voce.

Criando arte de jogos 3D para iPhone com Unity

Varios desses jogos foram aclamados pela critica nas listas dos Top 25 e Top 100 na App Store. 0 Unity tem se provado, cada vez mais, ser uma plataforma de de­ senvolvimento solida e a melhor solugao de middleware para a criagao de jogos para o iPhone e o iPad. Mas o App Store da Apple nao esta isento de controversia e, como desenvolvedor de jogos, e melhor sempre examinar cada oportunidade. Muitos tem afirmado que o mercado e o caminho mais saturado e dificil para que os desenvolvedores de jogos independentes sejam notados. Posso concordar inteiramente que esse pode ser o caso, mas se voce tiver paixao por criar jogos podera ser profundamente gratificante publicar um jogo que tenha o potencial de ser colocado na frente de milhoes de usuarios. Com o App Store, o mer­ cado esta ai, e voce nunca sabera o quao bem-sucedido o seu jogo podera ser, a menos que tente. Alem disso, a Apple examina os aplicativos enviados e mantem o direito de rejeitar o seu. Durante a redagao deste livro, assim como todos os desen­ volvedores, passei por um momento dificil e enfrentei a eventual exclusao do Unity IOS da plataforma quando a Apple mudou seus Termos de Servigo na Segao 3.3.1 do acordo SDK. Claro, a surpreendente equipe de desenvolvimen­ to por tras do Unity foi capaz de superar essa tempestade e a Apple acabou alterando oTOS para permitir ferramentas de desenvolvimento de terceiros. Gosto muito do ambiente de desenvolvimento da Apple e opto apenas por desenvolver para o iPhone e o iPad. Um ambiente de desenvolvimento padronizado, suportado com um hardware poderoso capaz de rodar jogos de ponta e funcionar em um mercado enorme, torna a utilizagao do Unity iOS e dos iDevices da Apple a principal solugao para os desenvolvedores de jogos independentes. Dito isto, como desenvolvedor de jogos e sempre melhor nao colocar todos os ovos na mesma cesta, por assim dizer. Diversificar suas plata­ formas pode ser uma coisa boa e, apesar de a plataforma da Apple ser otima, ela nao e a unica. Ha o Android e o Windows Mobile, para citar algumas outras importantes no mercado movel.

Pre-requisitos: O que devo saber? Nesse ponto, voce provavelmente esta se perguntando:"Ok, isso parece bom, mas o que preciso saber?"Como afirmado anteriormente, o foco deste projeto e abordar uma necessidade particular no desenvolvimento do jogo, que e a criagao do conteudo 3D. Neste livro, nao vamos cobrir o processo de criagao de um jogo inteiro. Entretanto, examinaremos em profundidade como o conteudo 3D se relaciona especificamente ao Unity em termos de construgao de conteudos altamente otimizados, especificamente para implementagao no iPhone e no iPad. Esta obra cobrira com profundidade os principios por tras da criagao do con­ teudo 3D para o iPhone e o iPad utilizando o Unity iOS, pois ele foi escrito para desenvolvedores de iPhone registrados e artistas 3D que estao procurando aumentar seus conhecimentos sobre como criar a arte para jogos 3D. Ao entender xiii

Criando arte de jogos 3D para iPhone com Unity

esses princi'pios, voce estara armado com o conhecimento tecnico para comegar a criar conteudo para seus proprios jogos. Embora os topicos sejam abordados em profundidade e nao apenas teoricamente, nao vamos passar por tutoriais completos passo a passo. Sempre achei que os tutoriais passo a passo apenas guiam na criagao de um objeto ou modelo de jogo especifico, o que raramente se relaciona com seus proprios projetos e necessidades. Aprendendo os principios por tras do processo, voce sera capaz de se concentrar na criagao de seu proprio conteudo. Com isso em mente, voce precisara ter uma base pratica das ferramentas que iremos usar, que sao o modo, o Blender e o Unity iOS. Este livro nao analisara como usar essas ferramentas do ponto de vista de um iniciante. Em vez disso, focara o uso dessas ferramentas para o fluxo de trabalho especifico de criagao de arte para jogos otimizada. Por exemplo, no Capitulo 1, analisaremos os aspectos tecnicos dos dispositivos iOS e como eles se relacionam ao Unity iOS, mas um conhecimento funcional do Unity iOS sera necessario, pois nao vamos analisar os fundamentos, por exemplo, como importar recursos e anexar componentes. De modo semelhante, e necessario conhecimento pratico de um programa 3D. Por exemplo, iremos construir recursos no modo, mas voce precisara conhecer as ferramentas de modelagem e entender o mapeamento UV. A razao para nao cobrir tais princi'pios e permitir que os topicos do livro se concentrem em tarefas mais especificas e avangadas quando elas se relacionarem a criagao do conteudo de jogos otimizado para a implementa­ gao no iPhone e no iPad. Este e um livro altamente especializado e e escrito para ser o que eu queria ter quando estava conhecendo o Unity iOS e o desenvolvimento de jogos para o iPhone. Trata-se de cortar o excesso, a fim de chegar ao centro das discussoes e maximizar os conceitos importantes que a obra precisa cobrir e o que a maioria dos livros de jogos deixa de lado. Neste livro, vou usar uma combinagao das Licengas Basica e Avangada (Ba­ sic e Advanced Licenses) do Unity iOS. A Licenga Basica e a rota menos cara e mais basica para comegar a entender como desenvolver jogos para o iPhone usando o Unity iOS. O aplicativo demo do livro sera publicado com a Licenga Basica (Basic License). Voce pode ver as diferengas entre as licengas Basic e Pro visitando link o http://unity3d.eom/unity/licenses#iphone. Uso o software modo da Luxology como minha principal ferramenta de criagao 3D. 0 modo e otimo para o desenvolvimento de jogos, no sentido de que fornece um conjunto de ferramentas de modelagem simplificada e pintura 3D. 0 pipeline de renderizagao do modo permite rapido e facilmente transformar as texturas e os mapas de luz em quadros-chave com a operagao de bake (baking).* Dito isto, os conceitos ilustrados aqui sao fundamentados nos principios para o desenvolvimento de jogos que podem ser transferidos para *Nota do Consultor Editorial: 0 termo bake (pronuncia: beike) refere-se a operagao que transforma anima^ao procedimental em curvas de animagao com quadros-chave tradicionais. Por exemplo, uma simulagao dinamica nao gera quadros-chave, por isso precisamos transformar as propriedades dinamicas em qua­ dros-chave para podermos editar ou exportar a animagao. Este termo foi criado numa alusao ao ato de assar para transformar massa em bolo (no caso transformar simulagao din£mica em quadros-chave). Bake tambem pode ser aplicado a outros procedimentos, como iluminagao. Qualquer tentativa de tradugao nao preservaria o sentido original nem respeitaria o seu amplo uso entre profissionais no Brasil.

Criando arte de jogos 3D para iPhone com Unity

qualquer aplicativo 3D; portanto, sinta-se a vontade para usar o aplicativo escolhido enquanto acompanhar. Tenho certeza de que ferramentas sao apenas ferramentas e de que e o artista e o seu conjunto de habilidades que criam um bom jogo. Um bom exemplo disso esta no uso do Blender neste livro. Em meu trabalho diario, uso o Autodesk Maya com o modo. O Maya e meu aplicativo 3D preferido para movimento de camera e animagao dos personagens, mas para ajudar a manter este livro aberto para o maior numero possivel de pessoas usarei o Blender para o movimento de camera e a animagao das partes desta obra. A principal razao e que o Blender e um aplicativo de codigo-fonte aberto, o que nao acrescenta nenhum custo adicional ao seu pipeline e fica disponivel mais prontamente. Alem disso, como estamos analisando os principios-chave para o movimento de camera e a animagao para jogos iPhone usando o Unity iOS, realmente nao importa qual aplicativo 3D voce usa e resume-se realmente a uma preferencia pessoal. Mesmo que este seja um livro da arte para jogos, abrangeremos o processo de criar arte para jogos junto com determinado mecanismo de jogo em profundidade, o que significa que nao podemos deixar os conceitos da programagao inteiramente de lado. Seria bom ter um conhecimento pratico dos conceitos basicos da programagao no Unity IOS.

Entrando nos princi'pios fundam entais Ja mencionei que nao faremos nenhum tutorial passo a passo neste livro. Ago­ ra, se estiver um pouco chateado, espere e veja por que decidi nao incluir os tutoriais passo a passo. Venho estudando o 3D ha muito tempo e defmitivamente passei por minha cota de tutoriais com os anos. Uma coisa que notei e que parecia que eu nunca me afastava muito dos tutoriais passo a passo. Ago­ ra esses tipos de tutoriais sao otimos para os iniciantes e eram justamente o que eu precisava quando comecei a aprender a modelar. Mas, quando eu procurava passar ao nivel seguinte, o passo a passo nao funcionava. O que descobri foi que, seguindo de um "estilo 3D com numeros", estava perdendo os principios vitais por tras do processo. Estava faltando o"porque"que conduzia as tecnicas. Alem disso, descobri que quase sempre eu ficava tao preso em 40 paginas de passos complicados, que perdia completamente o proposito por tras das tecnicas da construgao do modelo, sem mencionar o fato de que eu so estava aprendendo a criar um objeto especifico. Sinto que e muito importante comunicar os principios fundamentais e tecnicas por tras do processo de criagao em 3D para que voce, leitor, possa pegar esses principios e usa-los para construir seus proprios projetos, em vez de recriar algo especifico que apresentei. A questao e que, depois de entender os principios fundamentais por tras de um processo, voce pode usar esses princi'­ pios para elaborar suas proprias tecnicas e, por fim, ficar em dia e por dentro dos seus proprios projetos muito mais rapidamente. Embora estejamos no tema de seus proprios projetos, tambem queria reiterar o fato de quais aplicativos 3D usar fica totalmente a seu criterio. Mencionei que usaria um pipeline modo/Blender neste livro, mas os temas abordados podem ser usados em qualquer aplicativo 3D. Um aplicativo nao e particularmente melhor xv

Criando arte de jogos 3D para iPhone com Unity

do que outro, e realmente recomendo que voce tenha sempre em mente o de­ senvolvimento e/ou a personalizagao de seu proprio pipeline. Os artistas trabalham de maneira diferente e nao existe aquela que seja certa ou unica de concluir um projeto. Voce nao precisa usar o modo ou o Blender para acompanhar este livro. De fato, como ja mencionei, sou mais que um usuario modo/Maya. Como e gratuito, o Blender foi escolhido para os capitulos de animagao e tambem e um otimo companheiro do modo devido a sua atual falta de recursos de skinning, sem ter de trabalhar muito em seu livro de bolso. Peguei meu fluxo de trabalho do Maya e o estendi para o Blender. Responder o "porque" por tras das tecnicas sem recorrer as instrugoes passo a passo torna isso possivel.

Conhe^a o "T a te r"

r Tater e um personagem que desenvolvi com a ajuda de Warner McGee, um artista e ilustrador extremamente talentoso (http://www.warnermcgee.com). Eu tinha uma ideia do Tater e entrei em contato com Warner para ajudar a dar corpo e acrescentar sua experiencia artistica ao meu design do Tater. Nao sendo ilustrador, entreguei a Warner alguns esbogos muito basicos do design e ele fez sua magica, produzindo a versao do Tater mostrada neste livro. Foi xvi

Criando arte de jogos 3D para iPhone com Unity

incri'vel trabalhar com Warner neste projeto e muito divertido ve-lo transfor­ mar meu conceito original em um personagem completamente real. Como o Tater sera usado em outros projetos alem deste livro, tambem criei uma historia por tras, a fim de criar uma propriedade imersiva do jogo. Tater e um heroi relutante de um projeto pessoal de jogo em que estive trabalhando no chamado"Dead Bang". O conteudo que vamos explorar neste livro sao elementos retirados do mundo do Tater e do conceito do jogo Dead Bang. Em Dead Bang, Capitulo 1, Tater e o unico membro sobrevivente de uma cidadezinha do interior em um pesadelo apocaliptico de zumbis causado por um dispositivo peculiar chamado "Espremedor de Cerebro". Armado com seu amigo leal, "Thumper", uma espingarda letal modificada que Tater segura com precisao cirurgica, decapitando a cabega dos zumbis a cada puxada de gatilho, Tater flagela a regiao procurando livrar sua cidade natal de convidados inconvenientes e desativar o dispositivo Espremedor de Cerebro. A coisa que Tater mais gosta, mais ate do que desintegrar cabegas de zumbis, que ele carinhosamente chama de"Thump'n Noggins", e devorar um saco de "Batatas Chips de Churrasco do Bernie" o que Ihe rendeu o apelido "Tater". Neste livro, veremos alguns elementos do mundo do Tater para ilustrar os topicos abordados. Veremos a criagao e a animagao do Tater e da Thumper, bem como um ambiente do mundo "Dead Bang" para que sejam otimizados para rodar no iPhone e no iPad.

Recursos do livro Alem do conteudo aqui exposto, voce tambem encontrara muito material de bonus na forma de instrugoes de video no site de recursos da edigao americana. Obtem-se os recursos do livro visitando http://wesmcdermott.com e clicando no link "Creating 3D Game Art for the iPhone Book Site". No site oficial do livro, clique no link "Tater's Weapon Load out". Quando for solicitado o lo­ gin, digite "tater" para o nome de usuario e "thumpNoggins" para a senha. No inicio de cada capitulo que tem conteudo de video extra, voce sera lembrado de verificar o site de recursos, que sera representado pela chamada "Tater's Weapon Load Out". O livro tambem tem o seu proprio aplicativo iPhone e iPad chamado "Tater". O aplicativo serve como demonstragao criativa, executando o conteudo analisado em toda a obra nos iDevices reais. Com o "Tater", voce pode percorrer o terreno baldio de treinamento do Tater para atirar nos alvos. O aplicativo mostra todos os recursos do jogo e animagoes discutidos aqui. Voce pode encontrar mais informagoes sobre como obter o aplicativo "Tater" no site oficial do livro.

A aventura come^a... Temos muito a cobrir e comegaremos vendo detalhadamente as partes internas do hardware iDevice e do Unity. Assim que tivermos uma solida compreensao do hardware que conduz nosso jogo, poderemos comegar a construir o conteudo otimizado. Quando voce estiver pronto, va para o Capitulo 1 e como Tater diria: "Va­ mos fazer algumas cabegas rolarem!" xvii

CAPITULO 1

Conhecendo o hardware do iDevice e o Unity iOS O conhecimento tecnico por tras da criagao dos recursos do jogo e mais profundo do que apenas modelar a geometria de baixa resolugao. Antes de podermos entrar na modelagem ou criagao real de mapas de textura, precisaremos ter solida compreensao do hardware e do mecanismo de jogo no qual o conteudo sera executado. Cada plataforma ou dispositivo tera suas proprias limitagoes, e o que pode rodar bem em uma plataforma nao significa necessariamente que podera rodar bem em outra. Por exemplo, o processador mais rapido no iPhone 4 ou no iPad, em alguns casos, pode ajudar mais no processamento de chamadas do desenho do que o processador mais lento no iPhone 3GS. Outro bom exemplo e que, embora o iPad tenha um aumento de 400 MHz no desempenho do chip, a falta de uma GPU atualizada introduz novos gargalos no desempenho dos quais devemos estar cientes. Esse e o lugar onde o "orgamento do jogo" do projeto entra em jogo. Seu orgamento do jogo e a planta baixa ou guia por meio do qual o conteu­ do do jogo e criado. Ha tres especificagoes a saber, ao avaliar o hardware do iPhone e do iPad, que sao a largura de banda da memoria, a taxa do poligono e a taxa de preenchimento do pixel. Por exemplo, se voce tiver um con­ ceito de jogo rapido, precisara estipular alta velocidade de projegao em seu orgamento do jogo, como 30-60 quadros por segundo (frames per second fps), e todo o conteudo criado devera ser otimizado para permitir que o jogo cumpra esse orgamento da velocidade de projegao. Voce tambem precisara Creating 3D Game Art for the iPhone with Unity. DOI: 10.1016/B978-0-240-81563 3.00001-2 Copyright 9 2011 Elsevier, Inc. Todos os direitos reservados.

i

Criando arte de jogos 3D para iPhone com Unity

Tecnicamente arti'stico Aoanalisaro desenvolvimento dos jogos, os temas podem rapidamente se tornar muito tecnicos e programaticos, pois estamos analisando as implementagoes graficas em tempo real e as limitagoes do hardware movel. Sendo artista 3D, descobri que nao eram a modelagem e a texturizagao que eram dificeis na criagao da arte para jogos, mas o complicado era entender as limitagoes tecnicas do hardware e as implementagoes da OpenGL para criar imagens em tempo real. Nao se preocupe, o objetivo principal deste capitulo e discutir os seguintes topicos do ponto de vista do artista do jogo. 2

levar em consideragao que, com o iPad, esta essencialmente renderizando uma contagem de pixels que e cinco vezes superior aquela do iPhone 3GS e cerca de 1,2 vez maior do que a da tela do iPhone 4, o que resulta em 5-1,2 vezes a quantidade de dados processados por quadro. Sem entendimento adequado das capacidades e limitagoes do dispositivo que seu jogo esta visando, voce nao sabera quais otimizagoes para o conteudo do jogo serao necessarias para alcangar a velocidade de projegao orgada do seu jogo. Basicamente, seria como trabalhar no escuro. O objetivo deste capitulo e acender as luzes, por assim dizer, para se familiarizar com o hardware do iPhone e do iPad, assim como dar uma olhada nas partes internas do mecanismo de jogo do Unity iOS. Ao nos familiarizarmos com iDevices diferentes e com o que esta acontecendo internamente no Unity iOS, poderemos entender o "porque" por tras da construgao do conteudo otimizado para esses dispositivos. Tambem seremos capazes de determinar corretamente a velocidade de projegao, a contagem de poligonos e os orgamentos do tamanho da textura, em nosso orgamento total do jogo, que e determinado por um equilibrio do tipo de jogo que voce esta criando e a velocidade de projegao visada, tudo basicamente controlado pela largura de banda da memoria do hardware, taxa de poligono e taxa de preenchimento do pixel.

Hardware do iDevice Nesta segao, analisaremos o hardware para o iPhone e o iPad, e nesse ponto gostaria de fazer algumas distingoes entre os modelos de dispositivo. Neste livro, vou me referir ao termo "iDevices" para englobar todos os dispo­ sitivos, ou seja, iPhone, iPad e iPod Touch. 0 termo "iOS" e o nome oficial da Apple para o SO ou sistema operacional comum a todos os iDevices. Tam­ bem gostaria de acrescentar que este livro nao vai cobrir o iPhone 3G ou o iPod Touch de segunda geragao e versoes inferiores. Quando eu escrevia este livro, esses eram dispositivos de segunda e terceira geragoes, e quis focar os dispositivos mais atuais. Dividirei esta segao em duas categorias, que sao a unidade de processamento central ARM (CPU) e a unidade de processamento grafico PowerVR SGX (GPU). A medida que cobrirmos o hardware do iDevice, tambem iremos analisar como essas categorias se relacionam com o Unity iOS.

CPU AR A CPU e a unidade de processamento e os iDevices usam a arquitetura ARM com o nucleo Cortex-A8 na versao ARMv7-A, e, do ponto de vista de um artista, a CPU lida com os calculos. Na Figura 1.1, voce pode ver uma analise das diferengas do hardware em cada um dos iDevices. Cada modelo dos iDevices contem um hardware diferente ou atualizado que pode afetar o desempenho do seu jogo, tal como a forma como o hardware afeta a taxa de preenchimento do pixel. O iPad e o iPhone 4 contem o processador A4. O iPhone 3GS e o iPod Tou­ ch de terceira geragao usam um ARM Cortex-A8 que teve o clock reduzido

Criando arte de jogos 3D para iPhone com Unity

iPad

iP h o n e 4

Apple A4 1Ghz

Apple A4

ARM Cortex A8 600MHz

256MB Ram

512MB Ram

256MB Ram

SGX 535 GPU

SGX 535 GPU

SGX 535 GPU

iPhone 3GS [

*0 m esm o para o iPod Touch de 3‘ geragao

FIGURA1.1 Aqui, voce podever uma tabeld listandoosdiferentes componentesde hardwarenosiDevices.

para 600 MHz. Quanto ao desempenho nesses tres dispositivos, voce pode dizer, como regra geral, que o iPad e o mais rapido em termos de processamen­ to, seguido do iPhone 4 devido ao A4 ter tido o clock reduzido e, por fim, nao muito atras de todos esta o 3GS. Mais uma vez, repito: essa e uma regra muito basica e seu conteudo realmente conduzira esses resultados em termos de como a taxa de preenchi­ mento do pixel e a taxa do poh'gono afetam o seu jogo. Tragar o perfil de seu jogo nos dispositivos com o seu conteudo especifico e o caminho mais seguro e mais preciso para medir o desempenho, mas pode ser util ter ideias gerais sobre as capacidades do dispositivo nos estagios iniciais de desenvolvimento. Ha muitos aspectos sobre como a CPU afeta seu jogo com tecnologia Unity iOS. Por exemplo, a CPU tambem processa os scripts e os calculos fisicos, bem como mantem o sistema operacional inteiro e outros programas em execugao. Uma vez que este livro e sobre a criagao de arte para jogos, nos nos concentraremos nas proximas subsegoes como especi'ficas ao conteudo de arte para jogos nos objetos do jogo e nas operagoes que sao importantes para a CPU nesses termos.

Em uma nota particular, so porque uma pessoa pode ser mais familiarizada com a arte do desenvolvimento de jogos nao significa que ela deve evitaro codigo e, certamente, nao significa que os artistas nao conseguem entender os aspectos tecnicos. Na verdade, com o desenvolvimento de jogos independentes, existe alta probabilidade deque voce esteja nao so construindo um conteudo 3D, mas tambem codificando o jogo. Com bastante frequencia, vejo otimos scripts e programas escritos por artistas incriveis, em vez de programadores dedicados. O ponto aqui e que o script, as vezes, tem a conotagao negativa de algo a ser temido, edigo que isso nao poderia estar mais longe da verdade. Voce nunca sabe do que e capaz ate experimentar.

Chamadas do desenho A chamada de desenho pode ser pensada como um "pedido" para a GPU desenhar os objetos em sua cena e pode ser a area em que a CPU causa um gargalo no desempenho. Como analisaremos na segao GPU, o iPhone e o iPad utilizam o OpenGL ES 2.0 (OGLES) emulando os shaders OGLES 1.1 no nivel do hardware e, com essa implementagao, os dados do vertice sao copiados para cada chamada do desenho em cada quadro do loop do jogo. Os dados do vertice sao os vertices que compoem nossos objetos em 3D e as informagoes anexadas a cada vertice, tais como os dados posicionais, normais e UV, assim como os vertices de uma malha 3D no modo tem dados posicionais, normais e das coordenadas UV. 3

Criando arte de jogos 3D para iPhone com Unity

Loop do jogo O loop do jogo Unity lOSeo lugarondeos componentes do nosso jogo sao atualizados. 0 loop do jogo esta sempre em execugao, independentemente da entrada do usuario. Da perspectiva de um artista 3D, voce pode considerar o loop do jogo como uma animagao. Em uma animagao 3D, sua cena e executada em dada velocidade de projegao e, em cada quadro da animagao, algo e calculado, tal como a interpolagaodo quadro-chave. 0 loop do jogo de um mecanismo do jogo basicamente esta fazendo a mesma coisa.

FIGURA 1.2 Nesta imagcm, asareas amarelas destacadas representam ovolumedevisaoda camera eos verticesvisiveis por quadro.

4

Os dados do vertice sao transformados ou movidos no espago 3D na CPU. O resultado dessa transformagao e anexado a um buffer interno do vertice. Esse buffer do vertice e como uma lista grande ou um container que mantem todos os dados do vertice. Como os dados do vertice sao copiados na CPU, eles ocupam cerca de um tergo do tempo do quadro no lado da CPU, o que desperdiga a largura de banda da memoria devido ao fato de que o iPhone compartilha sua memoria entre a CPU e a GPU. No iPhone e no iPad, e preciso prestar muita atengao na contagem de vertices de nossos objetos e manter essa contagem o mais baixa possfvel, pois a contagem de vertices e mais importante do que a contagem de triangulos real. Como voce lera no Capitulo 2, falaremos sobre como determinar o numero maximo de vertices que pode renderizar por quadro individual. Eu costumava ficar confuso com a parte "por quadro" dessa afirmagao. Ajudou-me como artista 3D pensar em minha cena do jogo apenas como uma cena no modo. Por exemplo, se eu tiver uma configuragao de animagao no modo, a camera de renderizagao vai renderizar a parte da cena que ela pode ver no seu volume de visao (frustum), como definido nas propriedades da ca­ mera, para cada quadro da animagao. O mesmo e verdadeiro no Unity iOS. Na Figura 1.2, voce pode ver uma ilustragao que mostra a maneira como visualizo a contagem total do vertice de uma cena por quadro.

Com cada quadro de loop do jogo, apenas certa quantidade de vertices e visi'vel no volume de visao da camera para determinado quadro e, dentro desse quadro, devemos manter a contagem de vertices para todos os objetos na cena em cerca de 10 K. Agora, essa e uma sugestao sobre o que funciona melhor no hardware do iDevice, mas, dependendo do seu jogo e do conteudo do jogo, isso pode ser aumentado. O ponto e que, com o desenvolvimento de jogos, nao ha respostas absolutas quando se trata da otimizagao. Voce tem de otimizar o conteudo para os padroes de desempenho de seu jogo, ou seja, o seu orgamento da velocidade de projegao. Ha uma serie de tecnicas para otimizar nossa contagem de vertices, como iremos analisar nos capitulos de modelagem, e tambem ha otimizagoes de renderizagao para a visualizagao da camera, como a determinagao da superfi'cie oculta para controlar os vertices que sao enviados para o buffer de vertices. £ obvio que, quanto mais rapida for a CPU, mais rapidos os calculos serao. Mas, so porque voce tem mais potencia, nao significa necessariamente que deva jogar mais vertices no sistema sem levar em conta as outras consideragoes do desempenho, tais como a taxa de preenchimento do pixel, como va­ mos analisar mais adiante neste capitulo. Batching O batching e um meio de reduzir automaticamente as chamadas do desenho em sua cena. Existem dois metodos no Unity IOS, que sao os batches dinamico e estatico. £ importante notar que as chamadas do desenho sao um gargalo no desempenho que, em grande parte, dependem da CPU. As chamadas do dese­ nho sao geradas sempre que a CPU precisa enviar dados para a GPU para a renderizagao. A GPU e muito rapida no processamento de grande quantidade de dados; no entanto, nao e muito boa ao mudar o que esta fazendo por quadro. £ por isso que o batch e bom, uma vez que envia grande quantidade de dados para serem processados ao mesmo tempo. Dito isso, e sempre melhor testar a CPU e a GPU ao determinar os gargalos porque, se o seu dispositivo tiver problemas de taxa de preenchimento, que podem ser encontrados no iPad ou no iPhone 4, o gargalo de chamadas de desenho podera ser deslocado para a GPU. Batch dinamico Eis como funcionam os batches dinamicos em tempo de execugao. 1. Agrupe os objetos visiveis na cena por material e classifique-os. a. Se os objetos classificados nesse grupo tiverem o mesmo material, o Unity IOS aplicara transformagoes em cada vertice na CPU. A definigao da transformagao nao e feita na GPU. b. Anexe os resultados a um buffer de vertice dinamico temporariamente interno. 2. Defina o material e o shader para o grupo apenas uma vez. 3. Desenhe a geometria combinada apenas uma vez. A transformagao do vertice e as chamadas do desenho estao sobrecarregando no lado da CPU. 0 coprocessador com uma unica instrugao e dados multiplos (SIMD - single instruction, multiple data) encontrado nos iDevices suporta a extensao de ponto flutuante do vetor (VFP - vector floating point)

da arquitetura ARM, que lida com as transformagoes do vertice, gragas a algumas rotinas otimizadas no Unity iOS escritas para aproveitar o coprocessador VFR O coprocessador VFP esta realmente trabalhando mais rapido que a GPU e, portanto, e usado pelo Unity iOS para o ganho de desempenho ao colocar objetos em batch, para reduzir as chamadas de desenho. O motivo de focar o que diz respeito ao VFP e ao Unity iOS e a chave para o batch dinamico, que pode ser declarado como mostrado a seguir. Contanto que leve menos tempo para aplicar as transformagoes do vertice na CPU, e nao apenas enviar uma chamada de desenho, sera melhor colocar em batch. Isso e controlado por uma regra simples de que, contanto que o objeto tenha menos de 300 vertices, sera menos dispendioso transformar os vertices na CPU e, assim, ele sera colocado em batch. Qualquer objeto acima do limite de 300 vertices e mais rapido de desenhar, e nao sera colocado em batch ou tratado pelas rotinas do coprocessador VFP mencionadas. Embora esteja falando sobre o coprocessador VFP nos iDevices, devo mencionar que o Unity iOS tambem diminui a carga dos calculos do revestimento para o VFP, e e muito mais rapido do que utilizar o revestimento GPU. 0 Unity otimizou os caminhos de revestimento dos ossos tambem para aproveitar o coprocessador VFP. Batch estatico 0 batch estatico e o outro metodo que o Unity iOS utiliza para re­ duzir as chamadas de desenho. Funciona de forma semelhante ao batch dinami­ co, com as principals diferengas, voce nao pode mover os objetos na cena duran­ te a execugao e nao ha um limite de 300 vertices para os objetos que podem ser colocados em batch. Os objetos precisam ser marcados como estaticos no Editor do Unity iOS e isso cria um buffer de vertices para os objetos marcados como esta­ ticos. O batch estatico combina os objetos em uma malha, mas trata esses objetos como estando ainda separados. Internamente, ele cria uma malha compartilhada e os objetos na cena apontam para essa malha compartilhada. Isso permite que o Unity iOS realize a determinagao da superficie nos objetos visiveis. Eis como funciona o batch estatico em tempo de execugao. 1. Agrupe os objetos visiveis na cena por material e classifique-os. a. Adicione os indices do triangulo no buffer de vertices estaticos armazenados de objetos marcados como estatico no Editor Unity iOS a um buffer de indice interno. Esse buffer de indices contem muito menos dados do que o buffer de vertices dinamicos do batch dinamico, o que faz com que ele seja muito mais rapido na CPU. 2. Defina o material e o shader para o grupo apenas uma vez. 3. Desenhe a geometria combinada apenas uma vez. O batch estatico funciona bem para os objetos do ambiente em seu jogo. O Unity iOS agora inclui o mapeamento de luz e as ferramentas de oclusao, que afetam as condigoes do batch estatico sob as quais trabalhar, que sao o uso do mesmo material, afetado por um mesmo conjunto de luzes, e o uso do mesmo mapa de luz com a mesma escala. Como ja analisamos nesta segao, a CPU do iPhone e do iPad lida com os aspectos importantes de seu jogo em termos de como seu conteudo e

Criando arte de jogos 3D para iPhone com Unity

desenhado e em termos de envio de dados para a GPU e o desempenho do calculo matematico. Ate agora, tocamos rapidamente em conceitos como batching e revestimento VFP para familiariza-lo com a arquitetura basica dos iDevices e do Unity iOS. Nos capitulos posteriores, discutiremos em profundi­ dade como construir malhas otimizadas no modo para reduzir a contagem de vertices. Tambem veremos completamente como colocar nossos objetos em batch analisando o que cria ou interrompe um batch e como as texturas e os materiais do personagem do jogo se relacionam com o batching. No Capitulo 5, analisaremos os caminhos VFP otimizados para o peso dos ossos e o movimento da camera quando configurarmos o Tater para a anima­ gao usando o Blender.

GPU A GPU 6 a unidade de processamento grafico e lida com a renderizagao de nossa cena. Entre os modelos de iPhone diferentes, voce vera que todos eles usam a mesma GPU, que e a PowerVR SGX535. A SGX 535 suporta o OpenGL ES 2.0. Com o Unity iOS, os desenvolvedores de iPhone podem usar tanto a versao 1.1 como a 2.0 do OpenGL ES. 0 que isso significa para os desenvolvedores e que podemos tambem utilizar shaders que suportam um pipeline programavel, nao havendo necessidade de converter o shader 1.1 em 2.0 sempre que o dispositivo atender a um novo shader no jogo. Na Figura 1.3, pode-se ver a velocidade do clock da GPU SGX 535 e como isso se relaciona com a taxa de preenchimento do pixel e a throughput de triangulos por segundo. A taxa de preenchimento e o numero de pixels que podem ser desenhados na tela por segundo, e a taxa de transferencia e a quantidade de triangulos que pode ser processada por segundo. Como se pode ver na Figura 1.3, a GPU 3GS pode processar 7 milhoes de triangulos por segundo e cerca de 2,5 pixels por segundo. Mas, como com a CPU, eu tambem gostaria de reiterar o fato de que, embora parega que o SGX seja eficiente na renderizagao, nao significa que voce pode descarregar tudo

--- 1Power VR S GX 535 [---1 Velocidade do clock = 200MHz TriangulOS/S = 7M

(Megapixel)

Pixels/sec = 250M

(M egapixel)

FIGURA 1.3 0 SGX535temvelocidade declockmaior, permitindoque mais pixelsetriangulossejamdesenhados.

7

Criando arte de jogos 3D para iPhone com Unity

em cima dele sem pensar. 0 desempenho do seu jogo nao e inteiramente ditado pelas velocidades da CPU e da GPU. Por exemplo, a RAM e a memoria Flash lenta tambem podem ser um gargalo, especialmente ao tentar carregar tamanhos maiores de textura, como 1.024 x 1.024. Tudo se resume a um equilibrio entre a experiencia do jogador em termos de velocidade de projegao e as imagens do jogo. Voce sempre precisara tragar o perfil do desempenho para corresponder ao seu orgamento do jogo. O hardwa­ re mais rapido e uma vantagem e permite fazer mais, sempre lembrando que a construgao de um hardware de ponta inevitavelmente ira indispor um bom grau do seu potencial mercado devido a usuarios com modelos mais antigos.

Resolu^oes da tela iPhone 4,3GS e iPad tem diferentes resolugoes de tela e, se voce quiser que suas imagens paregam incriveis, precisara construir para corresponder a resolugao de cada dispositivo. Por exemplo, se construir as imagens de seu jogo baseando-se na tela do 3GS com 480 x 320, e depois dimensionar essas imagens para o iPad com 1.024 x 768, suas imagens e texturas ficarao muito feias, pois serao dimensionadas de uma resolugao inferior para uma resolugao de tela superior. Na Fi­ gura 1.4, voce pode ver um menu do aplicativo demo do livro e como o menu foi adaptado para cada uma das resolugoes de tela nos iDevices.

FIGURA 1.4

Aqui voce podever ummenuemcada uma dasresolugoes suportadas por diferentes iOevices. Taxa de preenchimento lim itada O 3GS, o iPhone 4 e o iPad estao usando a GPU SGX 535; no entanto, com o iPhone 4 e o iPad, a GPU tem de trabalhar mais para desenhar o seu jogo nas telas de maior resolugao. Isso pode fazer com que os jogos que rodam bem no 3GS tenham uma queda na velocidade de projegao no iPad e no iPhone 4 em certas condigoes. Na Figura 1.5, voce pode ver as diferengas na resolugao e como isso se relaciona com a GPU, tendo de trabalhar mais no iPhone 4 e no iPad, uma vez que renderiza 4-5,1 vezes o estado real da tela. A taxa de preenchimento e o numero de pixels que a GPU pode renderizar na tela por segundo. Com o iPhone 4 e o iPad, voce pode experimentar uma

8

Criando arte de jogos 3D para iPhone com Unity

FIGURA 1.6 Esta imagemusaa renderizagaodaviewport Overdraw doUnitypara ajudar avisualizar o conceitodeOverdraw. Voce podever os pianos quesesobrepoemnaviewport quandoeles saosombreados emum vermelhomais escuro.

FIGURA 1.7 Umfragmento representa os dadosdo modelo 3De pode ser interpoladoemi;mpixel mostrado natela.

10

fragmento tem dados associados, tais como o local do pixel no buffer do quadro, profundidade, coordenadas de conjuntos UV e informagoes da cor. Esses dados, que estao associados ao fragmento, sao interpolados a partir dos vertices transformados da geometria ou textura na memoria. Se o fragmento passar nos testes de rasterizagao que sao realizados na fase da rasterizagao na GPU, o fragmento atualizara o pixel no buffer de quadros. Gosto de considerar um fragmento como o DNA, por assim dizer, de um pixel. Na Figura 1.7, voce pode ver uma ilustragao que representa os dados do fragmento que se referem a um pixel real. Uma renderizagao baseada em ladrilhos dividira a tela em blocos menores e mais gerenciaveis chamados de ladrilhos e renderizara cada um separadamente. Isso e eficiente, especialmente nas plata­ formas moveis com largura de banda da memoria e consumo de energia limitados, como o iPhone e o iPad. Quanto menor o ladrilho que a GPU estiver renderizando, mais facil sera processar e, portanto, menos tera de ir para a memoria compartilhada do sistema, e em ultima instancia utilizara menos largura de banda da memoria. O renderizador TBD tambem usa menos consumo de energia e utiliza o cache da textura de forma mais simplificada, o que novamente e muito importante no iPhone devido as limitagoes de memoria. O iPhone tem uma unidade dedicada para lidar com o processamento do vertice, que faz calculos paralelamente com a rasterizagao. A

FIGURA 1.5 0 SGX535temde renderizarmais pixels noPhone4eno iPad, epodecausar problemas nataxa de preenchimento.

iPhone 4

1024x768 5,1 v e z e s

9 6 0 x040

4 ve ze s m aior do que 3 G S

queda na velocidade de projegao quando uma superficie transparente preencher a tela porque, no 4 iPhone e no iPad, a GPU pode ser considerada como tendo uma taxa de preenchimento limitada, o que significa que ela fica cheia, alcangando o limite da capacidade, e e o gargalo. Novamente, issoocorre por­ que esses dispositivos tem a mesma GPU que o 3GS, mas tem de renderizar 4-5,1 vezes a resolugao da tela. Passei por essa mesma situagao ao criar o apli­ cativo de recursos do livro, como analisaremos no Capi'tulo 4. Renderizagao baseada em ladrilhos 0 SGX usa a renderizagao adiada baseada em ladrilhos (tile-baseddeferred -TBD). O conceito por tras de uma renderizagao TBD e renderizar apenas o que e visto pela camera. Ao fazer isso, a renderizagao TBD nao perde velocidade de clock e largura de banda da memoria ao tentar descobrir os pixels dos objetos que estao ocultos atras de outros objetos, o que e referido como Overdraw. Para ajudar a visualizar o que e o Overdraw, na Figura 1.6 usei a definigao de renderizagao da viewport Overdraw no Unity iOS para visualizar o Overdraw e mostrar um exem­ plo de como ele se relaciona com uma cena. Isso nao 6 utilizado para a saida iPho­ ne, pois a renderizagao TBD da GPU mantem o Overdraw baixo, rejeitando os fragmentos ocluidos antes de eles serem rasterizados (convertidos em bitmaps). A rasterizagao e o processo atraves do qual os dados vetoriais sao converti­ dos em pixels. Tudo bem, entao o que e um fragmento? Voce pode considerar um fragmento como o estado de um pixel ou um pixel em potencial no sentido de que ele atualiza um pixel real no buffer de quadros. Um pixel e um elemento da imagem e representa o conteudo do buffer do quadro, que e basicamente um container que mantem informagoes graficas na memoria, tais como cor e profundidade. Durante a fase de rasterizagao na GPU, os triangulos sao divididos em fragmentos no tamanho de pixels para cada pixel que cobre a geometria. Um 9

Criando arte de jogos 3D para iPhone com Unity

Gostodevisualizar a renderizagaoTBDdoiPhone como semelhantearenderizagaoBucket domodo. FIGURA 1.8

fim de otimizar isso, o processamento de vertices acontece um quadro a (ren­ te da rasterizagao, sendo a razao para manter a contagem dos vertices inferior a 10 K por quadro. Mais uma vez, como artista 3D, isso me ajudou a visuali­ zar a renderizagao TBD no iPhone como semelhante a renderizagao Bucket no modo ou no mental ray, como mostrado na Figura 1.8.

RAM Ha uma diferenga de RAM entre os iDevices. O iPhone 4 contem o dobro da quantidade de RAM do iPad e do 3GS com 512 MB, enquanto o 3GS e o iPad contem apenas 256 MB. E importante compreender a RAM disponfvel e com a qual voce tem de trabalhar. Toda a quantidade de RAM esta disponivel para seu aplicativo, portanto parte dela deve ser economizada para executar o SO e outros aplicativos com multitarefas. Suas texturas sao geralmente o principal culpado, quando se trata de consumir a memoria RAM em seu jogo. Por isso e muito importante usar texturas compactadas e otimizadas para minimizar o uso

* C*n
aia: 1.1 m i : I . } a>| I . ) ■l« »ratH«> aia■ l.« aaa i I.T a»| l . l ia |: JJ.J >r«a«UM> H i : U .9 m i : M . l «ra»-«all f» aiai t) m i i II arf I I | M l> a 4 : I r i i «• aia. IH 1 I m i . H i l l art U I H la t (M > rarti »• aia: H M m u MM a*f H M | «a"ia4 »larif-4Mail« »»»•• • * a»»aatla a M ltl 1.2 filM U M 4tl: 1.1 CK M tlM I l.l h « i aaa.ry* mt«4 Ha» 3M M I i lU i t t M ka*« « t ? l l m H>kar »• c»ltM(ia*i I aallartlaa talal * » ril|a . I I

I I I l

de RAM no jogo. No Unity iOS, voce pode usar a janela Statistics para verificar o uso da RAM de video (VRAM) da sua cena, como mostrado na Figura 1.9. Alem disso, voce pode usar o Internal Profiler do Unity iOS para verificar 0 uso da memoria ao tragar o perfil de desempenho do seu jogo no Xcode, como mostrado na Figura 1.10. Pode ser util entender como o tamanho da textura se traduz em memoria de textura. E basicamente a contagem do numero total de pixels na imagem, multiplicada pelo numero de bits em cada pixel. Por exemplo, uma textura de 1 K contem 1.048.576 pixels (1.024 vezes 1.024). Voce pode, entao, multiplicar esse numero por 24 bits por pixel (1.048.576 vezes 24) para obter 25.165.824 pixels na imagem inteira. Porfim, divida esse numero pelos bits em cada byte, que seriam 8 (25.165.824 bits vezes 8 bits em um byte) para obter 3.125.728 ou cerca de 3 MB por texturas de 1 K. Agora isso nao conta para a compressao; entao, se comprimirmos essa textura no Unity iOS usando o Texture Importer para 4 bits do PVRTC, poderemos reduzir essa quantidade de memoria a 0,5 MB, com uma diferenga insignificante.

OpenGL ES 0 OpenGL ES e uma subsegao da interface de programagao de aplicativos (application programming interface, API) do OpenGL e e usado em todos os dispositivos do SO iPhone, uma vez que seu design basico e para usar com a tecnologia movel. Ja mencionei que o SGX535 suporta o OpenGL ES 2.0. No que isso realmente se resume, com o Unity iOS no iPhone, e o tipo de shaders que voce sera capaz de usar em seus projetos Unity iOS. O Unity iOS permitira construir para as versoes 1.1 e 2.0 do OpenGL ES. Isso permite construir cenas Unity iOS diferentes, que visam diferentes dispositivos e a versao OpenGL ES, e, em tem­ po de execugao, carregar uma cena OpenGL especifica com base no dispositi­ vo iPhone que executa o jogo. A diferenga entre o OpenGL ES 1.1 e 2.0 e que a versao 1.1 suporta um pi­ peline grafico com fungao fixa (FFP) e a versao 2.0 suporta um pipeline grafico 12

Criando arte de jogos 3D para iPhone com Unity

totalmente programavel (FPP). Outra vez, basicamente isso dita o tipo de sha­ der que voce pode utilizar ou escrever para o seu jogo. Pipeline com funqao fixa Um FFP usa a funcionalidade"fixa"ou predefinida em diferentes fases do pipe­ line, incluindo o processamento de comandos, transformagoes 3D, calculos de iluminagao, rasterizagao, nevoeiro e testes de profundidade. Voce tem a capa­ cidade de ativar ou desativar partes do pipeline, bem como configurar varios parametros, mas os calculos ou os algoritmos sao predefinidos e nao podem seralterados. Pipeline totalmente programavel Um FPP substitui muitas fases "fixas" do FFP pelas fases totalmente programaveis. Isso permite que voce escreva o codigo que vai realizar os calculos para cada estagio no pipeline programavel. Um FFP abre a porta para shaders aperfeigoados para seus jogos, bem como maiores otimizagoes devido ao fato FIGURA1.11 Estediagrams ilustra osdiferentes pipelines disponiveis nas versoes 1.1e2.0OpenGL ES.

Pipeline de fungao fixa

Pipeline programavel 13

Criando arte de jogos 3D para iPhone com Unity

de que algoritmos complexos podem ser executados em uma unica passagem no shader e certamente economizara ciclos da CPU importantes. Na Figu­ ra 1.11, voce pode ver um diagrama de ambos os pipelines. Texturizaqao E muito importante reduzir seus tamanhos de textura para o iPhone, pois o cache da textura embutido e pequeno. A renderizagao TBD e otimizada para lidar com o cache da textura de forma eficiente, mas voce ainda deve ficar atento aos tamanhos de sua textura e comprimi-los para reduzi-los. 0 iPhone usa um esquema de compressao de hardware chamado PVRTC, que permite a compressao de 2 ou 4 bits por pixel. Essa compressao ajudara a reduzir a largura de banda da memoria. Quando estiver calculando seu orgamento de memoria para as texturas, precisara tomar algumas decisoes sobre a forma de comprimi-las. No Unity iOS, voce pode definir a compressao da textura para seus recursos de textura no menu de configuragao, como mostrado na Figura 1.12. Mas, para que suas texturas sejam comprimidas, elas precisam estar em uma potencia de 2, ou seja, 1.024 x 1.024, 512 x 612, e assim por diante. A compressao da textura tambem e importante, pois a memoria no iPho­ ne e compartilhada entre a CPU e a GPU, como mencionado anteriormente. Se suas texturas comegarem a ocupar a maior parte da memoria, voce podera rapidamente correro risco de ojogo travar no iPhone. Unidades da textura Com o OpenGL ES 1.1, voce so tem duas unidades de textura (TUs) disponiveis e, com o OpenGL ES 2.0, pode ter ate oito unidades de textura disponiveis.

Default

( 2 Override for iPh Max Size Texture Format

RGB Compressed PVRTC 2 bits RGBA Compressed PVRTC 2 bits ✓ RGB Compressed PVRTC 4 bits RGBA Compressed PVRTC 4 bits RGB 16 bit RGB 24 bit Alpha 8 RGBA 16 bit ARCB 32 bit

- m m

Voce nao precisa comprimir suastexturasfora doUnity I0S. Acompressaoda textura podeser definida por textura noUnity iOS. FIGURA 1.12

14

1 0 2 4 x I0 Z 4 RCf RC B!trdh?pffrW d P V R T C 4 bits' m m m

0.5 MB

Criando arte de jogos 3D para iPhone com Unity

As texturas precisam ser filtradas, e e tarefa da unidade de textura aplicar operagoes nos pixels. Por exemplo, nos iDevices que usam o OpenGL ES 1.1, pode-se usar combinagoes em seus shaders Unity, que determinam como combinar as texturas, a fim de associar duas texturas. Isso me ajuda a imaginar combinagoes como modos de mesclagem do Photoshop, ou seja, somar e multiplicar. Com o 3GS, o iPhone 4 e o iPad, e possivel combinar ate oito tex­ turas, desde que se tenham oito unidades de textura disponiveis. Ha alguns ganhos de desempenho a serem considerados apenas ao fazer uma amostra da textura, como discutiremos nos capi'tulos sobre a texturizagao. Por exemplo, em vez de contar com um shader do mapa de luz, que combina uma imagem RGB com um mapa de luz atraves de uma operagao de multiplicagao, voce pode transformar em quadros-chave com a operagao de bake a iluminagao no mapa difuso e, assim, aplicar apenas uma textura ao material, como mostrado na Figura 1.13.

Operaqoes alfa Ha duas maneiras diferentes de lidar com a transparencia em suas texturas: a mesclagem alfa e o teste alfa. A mesclagem alfa e a ope­ ragao menos cara no iPhone, uma vez que, com a renderizagao TBD, nao ha nenhuma largura de banda da memoria adicional necessaria para ler os valores de cor no buffer de quadros. Com o teste alfa, o valor alfa e comparado com um valor fixo e requer muito mais do sistema. Na Figura 1.14, voce pode ver um dos shaders iPhone que vem com o Unity iOS e que o teste alfa foi desativado. Alem disso, observe que o shader esta configurado para usar mesclagem alfa. Nas ultimas paginas, estivemos analisando o hardware do iPhone e como ele se relaciona com o Unity iOS. Agora, que temos uma compreensao do hardware, estamos numa posigao em que podemos determinar realistamente nosso orgamento do jogo, como analisaremos na proxima segao.

FIGURA 1.13 Emvezdeusarum shaderdo mapa de luz, voce pode combinar manualmente seumapa e atextura difusa noPhotoshope usar apenas uma unica textura.

D eterm inan do o orgam ento do jo g o Antes que possa comegar a criar objetos do jogo, voce precisara criar o que chamo de orgamento do jogo. O orgamento do jogo descreve os padroes que voce seguira ao criar conteudo, bem como codificar o jogo. Para comegar, voce precisara decidir que tipo de jogo vai criar e de quais requisitos especificos 15

Criando arte de jogos 3D para iPhone com Unity

FIGURA 1.14 Aqui voce pode ver que a instrugao esta configurada para usar a mesclagem alfa, em ve7 do teste alfa.

-

Comp.ltd-iPtxxxTr*nsp*rent VertexCo> 'omtauter * ' Shod#' "iPhone/Tronsporent/Vertex Color* {

Properties {

.C olo r ("M ain C o lo r', C o lor) - ( l . l . l . l ) .SoecColor ("Sp ec C o lo r". Co lor) - (1 ,1 ,1 ,9 ) .Emission ( 'E m i s i v e C o lo r", Co lor) - (0 ,0 ,0 ,0 ) .Sh in iness ("S h in in e s s ", Ronge (0 .1 , 1 )) • 0.7 JtoinTex ("Bose (RGB) Trons ( A )" , 20) - •-hite’ O

) Category {

Togs { "Queue"•"Transporent" "IgnoreProjector^-'True* ’ RefxJerType’ -’ Trorsporent*} CTrtte Off___________ Alphofcesi Greoter i ■ Blend SrcAlpho OneMinusSrcAlpha

Material {

}

01 ffuse C-Color] A^Oient C_Color] Sh4n\ness Spe » U » tr ~ 4 « t* U » 9 * y t i • M il l

it

M l: 21 14 . . . }« 1 .4 M l H l i t i . 9 .1

Vocepode usaro Internal Profiler para locator os gargalos nojogo. FIGURA 1.15

4 .5 9 .4

lr « ; 21 I b M (M a rt I 74 I W t« M • • C *IU *| t . ) ftfciiMLH' • • M r w llfM : • •

.1 • f I t l l M t l W l i • M llM t lM I t t t l

llw .

9 .9

Orgamento da renderizagao A seguir, preciso determinar onde quero passar a maior parte do meu tempo em termos de quanto tempo leva para o Unity iOS processar um quadro ou o tempo do quadro. Por exemplo, o meu jogo nao usa muito os calculos da ffsica; portanto, determinei que posso passar a maior parte do meu tempo do quadro na renderizagao.

Orgamento do vertice Para calcular o orgamento de vertices para os objetos individuals do jogo, voce precisara pensar novamente no tipo de jogo que esta criando. Se estiver crian­ do um jogo que exija grande quantidade de objetos na cena, precisara reduzir a contagem de vertices por objeto. Como mencionei anteriormente, voce desejara obter um valor-base inferior a vertices de 10 K por quadro e distribuir esses vertices para o que considera ser os objetos do jogo mais importantes. Por exemplo, voce pode querer dar ao seu heroi um pouco mais de resolugao em termos de contagem de vertices, reduzindo a contagem para os inimigos. Esse orgamento e subjetivo nos requisitos do jogo, mas voce pode ver que, sem entender as limitagoes do hardware, sera impossivel criar recursos que sejam executados suavemente no iPhone e no iPad.

Orgamento de texturas Discutimos que a memoria da textura pode ocupar muitos dos recursos do iPhone, e seu orgamento de texturas sera o tamanho combinado de recursos da memoria para o qual voce esta preparado para alocar as texturas no seu jogo. Voce desejara minimizar a quantidade de memoria que suas texturas estao consumindo em seu jogo, e ha varias opgoes para reduzir a carga, como o uso da compressao da textura, materials compartilhados e atlas da textu­ ra. Dispositivos diferentes tambem terao requisitos diferentes. Por exemplo, o iPad e o iPhone 4 precisarao de texturas de maior resolugao, ja que o tamanho da tela e maior, mas voce vera que a otimizagao se torna um pouco mais complicada, uma vez que o iPad e o iPhone ainda estao usando a mesma GPU PowerVR SGX535 encontrada no 3GS, apesar de ter uma tela maior, como vimos anteriormente.

Recapitulagao No transcorrer deste livro, teremos uma visao mais aprofundada sobre a oti­ mizagao nas diversas fases da modelagem e texturizagao. Mas o importante a lembrar e que todos os nossos orgamentos se resumem a um fator, que e cumprir o orgamento do quadro. A meta para qualquer jogo em termos de 17

otimizagao e ele ser executado sem problemas, e a unica maneira de conseguir isso e assegurar que seu conteudo seja otimizado o sufkiente para manter uma taxa de quadros constante. £ muito prejudicial para um jogo diminuir constantemente a taxa de qua­ dros. As principals areas que voce focara ao otimizar seu jogo em termos de arte para jogos sao as seguintes: 1. Reduzir as chamadas do desenho por processamento em batch de objetos. 2. Manter baixa a contagem de vertices por quadros. 3. Comprimir as texturas e reduzir a largura de banda da memoria atraves de materials compartilhados e atlas da textura. 4. Usar shaders otimizados e nao usar o teste alfa.

Resumo Isso conclui nossa analise geral do hardware do iPhone e do iPad, e como ele se relaciona com o Unity iOS. Nao posso enfatizar o bastante como e vital compreender a plataforma na qual voce esta trabalhando. Agora, que discutimos as especificagoes do hardware e determinamos um orgamento do jogo, podemos comegar realmente a construir o conteudo e trabalhar em um jo­ go. No Capitulo 2, comegaremos vendo a modelagem do Tater para o iPhone e o iPad, e veremos o Unity iOS.

CAPITULO 2

Criando objetos do jogo com o modo Tater e Thumper Neste capitulo, veremos em profundidade a criagao de um "heroi"e sua prin­ cipal arma. Agora uso a palavra "heroi", mas nao quero dizer isso no sentido de o personagem ter um trago heroico. Mas me refiro ao personagem principal ou ao recurso de um jogo. E o objeto "herdi" que recebe a maior atengao no que diz respeito a contagem de poligonos e aos recursos do sistema. Como discutimos no Capitulo 1, quando se trata de um dispositivo movel, como o iPhone e o iPad, voce sempre deve estar ciente dos recursos limitados dis­ poniveis. Como um velho avarento constantemente contando cada centavo, voce deve prestar atengao em cada vertice e certificar-se de que nao desperdiga nenhum. Neste capitulo, discutiremos as tecnicas e os princi'pios por tras da criagao de modelos otimizados do jogo para os iDevices. Para ilustrar os conceitos, examinaremos o processo por tras da criagao do Tater e de seu leal companheiro de destruigao em massa, Thumper, como mostrado na Figura 2.1. Comegaremos analisando como determinar o orgamento dos poligonos do projeto.

Creating 3D Game Art for the iPhone with Unity. DOI: 10.1016/B978-0-240-81563-3.00002 4 Copyright 9 2011 Elsevier, Inc. Todos os direitos reservados.

Criando arte de jogos 3D para iPhone com Unity

FIGURA 2.1

TatereThumper, osprincipal'sativosquefocaremos nestecapitulo.

O carregamento da arma do Tater Va para o site de recursos para ver o video completo deste capitulo.

Planejando o orgamento de vertices Falamos muito no Capitulo 1 sobre o orgamento do jogo. Parte de calcular um orgamento do jogo e propor um orgamento para a quantidade de verti­ ces com os quais os modelos serao compostos. 0 orgamento de vertices 6 o processo de decidir exatamente quantos vertices os objetos que compoem a cena contem, e e mostrado por quadro do loop de jogo, mantendo ainda a velocidade de projegao de seu orgamento do jogo. Esse e o segredo para o processo da modelagem porque voce nao pode modelar nada sem conhecer as limitagoes do dispositivo visado, a velocidade de projegao visada de seu jogo e o orgamento geral dos vertices. Voce precisa ter uma contagem de ver­ tices calculada antes que um unico poligono seja criado no aplicativo 3D. No Capitulo 1, colocamos a primeira pega desse quebra-cabega analisando os varios componentes de hardware encontrados nos diferentes iDevices a fim de entender suas limitagoes e, assim, estabelecer uma linha de base a seguir para criar uma geometria otimizada para o iPhone e o iPad. Na proxima segao, ve­ remos como voce pode determinar o orgamento de vertices.

Testando o desempenho Determinamos entao que o planejamento do orgamento de vertices e o primeiro passo antes de criar qualquer geometria real, mas como esse orgamen­ to e realmente determinado? No desenvolvimento de jogos, voce ouvira com muita frequencia a palavra "depende". Mas, embora possa parecer uma resposta rapida a uma pergunta complicada, ela e realmente verdadeira. Deter­ minar um orgamento de vertices ou qualquer orgamento no desenvolvimen­ to do jogo depende unicamente do seu jogo. 0 tipo de jogo que voce esta 20

procurando criar revela muito do peso no que diz respeito a forma como voce determine seu orgamento de vertices. Por exemplo, se seu jogo tiver renderizagao pesada, utilizando muitos ob­ jetos na cena, voce tera de reduzir nas simulagoes da fisica. Por esse mesmo motivo, um jogo pesado baseado na fisica exigira mais recursos da CPU e, as­ sim, contagens de vertices menores e menos objetos em cena, a fim de equilibrar o desempenho geral do jogo. £ uma concessao mutua, e o tipo de jogo que voce esta criando ditara esse equilfbrio. £ por isso que o Capitulo 1 foi dedicado ao hardware do iDevice para entender do que o hardware e capaz e que suas limitagoes sao vitais na construgao de conteudo.

Criando uma cena de teste do desempenho Quando voce esta nos estagios iniciais do desenvolvimento do jogo, pode ser extremamente util criar uma cena de desempenho para testar as capacidades do hardware. Por exemplo, para o demo de jogo do livro e da perspective de um artista 3D, quis me concentrar na renderizagao dos ativos 3D. Esse foi o meu principal objetivo, e estabeleci desde o inicio que queria passar a maior parte do tempo do quadro na renderizagao. Tambem decidi que queria que o meu jogo mantivesse uma velocidade de projegao de 30 fps. Com essa meta estabelecida, criei uma cena demo que eu pudesse instalar no iPhone e no iPad, a fim de testar o desempenho e ver ate onde poderia levar o hardware. A cena demo nao precisa ser complicada nem ter boa aparencia. Seu proposito e apenas medir o desempenho. Para economizar tempo, fui para o site do Unity iOS e baixei o tutorial Penelope, que pode ser encontrado em http://unity3d.com/support/resources/tutorials/ penelope. O modelo Penelo­ pe parecia chegar perto do nivel de detalhe que eu estava procurando para criar para o Tater e contribuiria como um bom modelo de teste. Entao, abri o projeto Penelope completo e excluf todos os ativos, exceto o modelo e a cena "PlayerRelativeSetup". Com essa cena simples, tenho uma malha de pele com animagoes e uma configuragao de controle padrao para mover o personagem na cena, como mostrado na Figura 2.2. Finalmente, criei um botao simples e adicionei um script que instanciaria uma nova instancia do modelo Penelope na cena na posigao do personagem do jogo, assim como exibiria a contagem geral dos vertices para Penelope e seus clones. Utilizando os recursos do Penelope, fui capaz de criar rapidamen­ te uma cena prototipo para testar o desempenho do hardware sem precisar gastar tempo criando objetos. Assim que o jogo foi compilado em um projeto Xcode, pude roda-lo em um dispositivo durante a execugao do Internal Profi­ ler para verificar o desempenho, como mostrado na Figura 2.3. Ao monitorar a variavel de tempo do quadro do Internal Profiler no Con­ sole do Xcode, continuei a pressionar o botao "Add" no jogo para criar mais instancias do objeto do jogo Penelope e, assim, aumentar a contagem de vertices e malhas de pele. A contagem de vertices e responsavel apenas pelo personagem Penelope e seus clones instanciados. Alem disso, a exibigao da contagem de vertices nao e responsavel pela Occlusion Culling (determinagao de superficie oculta), mas seu proposito e apenas dar uma ideia basica da con­ tagem de vertices na construgao de seus modelos no modo.

Criando arte de jogos 3D para iPhone com Unity

J J

FIGURA 2.2

CenadotestededesempenhonoUnity iOSfeitoapartir dos recursosdotutorial doPenelope.

Cenade desempenho rodandoemumiPodTouchdeterceira geragaoenoiPad. Noteasdiferengas drasticasnacontagemdevertices entreos doisdispositivosem30fps (33,3milissegundos). FIGURA 2.3

Basicamente, continuei adicionando objetos do jogo ate a variavel de tem­ po do quadro ter indicado que eu nao estava mais atingindo minha velocidade-alvo de projegao com 30 fps. 22

Criando arte de jogos 3D para iPhone com Unity

0 Internal Profiler mostrara as informagoes de desempenho do quadro a cada 30 quadros com a variavel de tempo do quadro descrevendo quanto tempo levou para renderizar um quadro medido em milissegundos. Isso signi­ fica que, se voce pegar 1.000 e dividi-lo pela velocidade de projegao desejada, que e de 30, tera 33,3 milissegundos. Ao testar o desempenho, eu observaria a variavel de tempo do quadro para ver o valor em milissegundos que ela es­ tava produzindo. Por exemplo, se o tempo do quadro estivesse indicando um valor de 37 milissegundos, eu pegaria 1.000 e dividiria por 37 para obter 27,02 ou 27 fps. Conhecendo a contagem de vertices do modelo Penelope e anotando quantas instancias de Penelope fui capaz de adicionar a cena antes de ela co­ megar a ter problemas, consegui obter uma boa estimativa do que o hardware poderia suportar. Essa cena demo me permitiu ver quantas malhas de pele poderia executar ao mesmo tempo, bem como quantos vertices poderia rende­ rizar na cena, o que pode ser referido como taxa do vertice. Isso e apenas uma estimativa aproximada do desempenho da cena, ja que nao estou levando em conta o desempenho do script ou a fisica usada em um jogo inteiro. Essa cena de desempenho pode ser usada para derivar uma ideia basica do que pode ser realizado com o hardware em termos de contagem de vertices. Na Figura 2.4, voce pode ver os resultados obtidos ao executar minha cena de desempenho em um iPod Touch de terceira geragao. j

Unity- f r o n t - 3 eb ug g «r Consol*

I H w i V a it y i a l c r i u l p r o f ile r » ta t» a im I I S M l i 23.1 (M - « | U i- 4 r v > a im m i:

*«f n
a u 4 M ap.

•.I

M il 2 » l) M ai 14SI a a iM tia a :

| a«« 2513 a«« 1451 | 1 4 c u llia p l . l

M tc fc M k a ttM k M (M t k iiM la f ;

l t lx M K p M ta 1 .1 c a r o w t la M i 3 I7 2 M a V la c a tM M a p . 3S43S2 w

I I I 1.7 b a tc b ia f i

1 .1 r a a f a n

I I • •ak tr a f c a lla c t i a a s

I

1.3 IU *4 -u p4at«-

c a lla < t ia a t a t a l P a r a t ia a :

If k a w B a it y ia t a r n a l p r a f i l a r a ta tm cpa-playar» a im 7 I a«a 21.1 a«| 21.3 1.1 a . V -

f ig u r a 4.21 Modelo da pilha de lixo que cerca o nivel.

Texturizando o nivel Nesta segao, quero falar sobre como o atlas de texturas foi criado para o mvel. Veremos como medir a cena para determinar o tamanho da textura, bem como a criagao das UVs. Mencionei anteriormente que o nivel inteiro foi criado como um item de malha e, em seguida, foi dividido e exportado para objetos separados. Isso tornou muito mais facil a criagao das UVs e, como dividi o m'vel em segoes, os mapas UV criados tambem foram copiados. Isso significou que as coordenadas ainda se alinhariam corretamente, embora as segoes fossem salvas em arquivos FBX separados.

Medindo a cena O primeiro passo e medir a cena para determinar o tamanho. Como mencio­ nado anteriormente, usei a ferramenta Dimensions, selecionei os poligonos para obter a medida e, depois, multipliquei isso pelo tamanho da textura funcional. Lembre-se, o tamanho da textura tinha 128 pixels, portanto selecionar um bloco da cerca de madeira exibiu um tamanho 4 x4, o que equivale a 512 pixels (128 vezes 4) no mapa de textura. Entao, medi todos os itens da cena e anotei o tamanho que precisariam para se relacionar no mapa de texturas.

Criando as texturas Antes de criar quaisquer coordenadas UV, criei o atlas de texturas. Isso tem um sentido contrario a maneira como o Tater e a Thumper foram criados. Como mencionado anteriormente, usei o CG Textures para fazer o download de toda 86

Criando arte de jogos 3D para iPhone com Unity

referenda de textura necessaria para o nivel, depois usei meu esquema de medigao para construir o atlas de texturas com as especificagoes de tamanho corretas. 0 objetivo e usar cada pixel na imagem e ter cada pixel mapeado para um objeto. Essa etapa e mais dificil do que a modelagem, ja que voce tem de calcular logicamente uma maneira de as texturas caberem no mapa, mas man­ ter o tamanho correto. Por exemplo, ve-se na Figura 4.22 que, com o meu atlas de texturas, perdi um pouco de espago ao criar as texturas para o barril. Isso nao vai atrapalhar, mas nao e tao otimizado como deveria ser. FIGURA 4.22 As areas destacadas m ostram o espago da textura desperdigado.

fUiJJBtXi ti t: lo d m

nftti

B7*" ir*Tr~

Criando UVs Logo que o mapa de texturas esta completo, importo essa textura para o modo e defino a janela UV para mostrar a imagem. Durante a criagao das UVs, posso usar o mapa de imagem como um guia para alinhar as coordenadas com a imagem. Novamente, fago isso no sentido contrario a maneira de tra­ balhar normalmente com as UVs, mas tambem torna o processo de layout UV simples. Na Figura 4.23, voce pode ver o mapa UV que foi criado e como se relaciona com o atlas de texturas.

UVs do mapa de luz Para esse nivel, usei muito mapeamento de luz e precisei ter certeza de que havia criado um mapa UV contendo coordenadas que nao se sobrepunham. A nao sobreposigao das UVs e a chave para criar um layout UV que e cor­ reto para o mapeamento de luz, ou seja, o mapa UV atual nao funcionara. Nao se preocupe, a criagao de UVs para o mapeamento de luz e de longe o estagio mais facil em todo o processo. Ainda trabalhando na malha para todo o nivel, criei um mapa UV novo, que agora me deixa com dois mapas UV para a ma­ lha. O primeiro mapa UV e para a textura, e o segundo e para o mapa de luz. 87

Criando arte de jogos 3D para iPhone com Unity

FIGURA 4.23 Mapa UV junto com o atlas de texturas. 0 sombreamento vermelho mostra as UVs sobrepostas, que ficarao lado a lado no mapa.

Agora, com o mapa UV em branco selecionado, usei a ferramenta de projegao UV, com o modo Projection configurado como Atlas e depois apenas cliquei com o botao esquerdo na janela do editor UV para criar a projegao. E isso ai. A projegao Atlas abriu (desembrulhou) e organizou todas as coordenadas de forma perfeita para criar um mapa de luz. Na Figura 4.24, voce pode ver as UVs projetadas com a finalidade de criar um mapa de luz.

Gere UVs do mapa de luz no Unity iOS 0 Unity iOS tem um 6timo recurso novo que permite gerar UVs para o mapeamenio de luz em Import Settings. Veremos essa opgao no Capftulo 8.

FIGURA 4.24 Eis as UVs do mapa de luz. Note que nao ha nenhuma UV sobreposta.

88

Resum o Isso nos leva ao final deste capitulo. Discutimos varios temas importantes, como a construgao na grade, a divisao de um nivel em segoes e a configura­ gao de um tamanho de textura pratico. Como voce pode ver, a modelagem de um nivel nao e muito complicada em termos de tecnica de modelagem. Certamente pode ser mais complicada do que o nivel mostrado aqui, mas os conceitos basicos mostrados neste capitulo serao usados ate mesmo nos de­ signs de nivel mais complexos. As tecnicas analisadas neste capitulo nao estao completas. No Capitulo 8, vamos rever esse nivel e continuaremos a falar sobre o mapeamento de luz detalhando o processo de usar o Beast no Unity iOS. Falaremos tambem so­ bre como consegui adicionar sujeira e imundicie ao mapa de luz para fornecer mais detalhes unicos e aleatorios ao nivel, minimizando a natureza repetitiva das texturas lado a lado.

Anima^ao usando o Blender Movimento de camera em torno do Tater

Neste capitulo, veremos o processo de fazer o movimento de camera do Tater com o proposito de criar varias animagoes do jogo, como correr, caminhar e atirar. Este capitulo discutira a utilizagao do aplicativo Blender de codigo-fonte aberta. A maioria dos aplicativos 3D e muito cara, e o Blender, sendo livre, pode ser uma otima alternativa para o desenvolvedor de jogos independente. O Blender esta disponivel para todas as plataformas, ou seja, Windows, Mac OS e Linux. O Blender foi escolhido como o pacote de ani­ magao para este livro porque e um excelente companheiro para pipeline do modo. Embora o modo tenha algumas capacidades de animagao robustas, carece de um sistema de ossos e revestimento, que e vital para a criagao de malhas de pele para uso no Unity iOS. Agora voce pode criar um persona­ gem segmentado no modo que e animado usando restrigoes e cinematica inversa (Inverse kinematics - IK), mas esse tipo de personagem nao atende aos requisitos do meu projeto. Como em todo o conteudo deste livro, este capitulo assume que voce tem conhecimento pratico do software, que no caso dos proximos tres capitulos e o Blender. Para as segoes do Blender do livro, usei o Beta 2.53. Voce pode bai­ xar o Blender 2.5 em http://www.blender.org.

Creating 3D Game Art for the iPhone with Unity. DOI: 10.1016/B978-0-240-81563-3.00005-X Copyright 9 2011 Elsevier, Inc. Todos os direitos reservados.

O carregamento da arma do Tater Va para o site de recursos para ver o video completo deste capitulo.

91

Criando arte de jogos 3D para iPhone com Unity

Meu pai pode veneer o seu Faga urma rapida parada em quase qualquer forum CG e voce sera capaz de encontrar facilmente topicos do forum cagoando do debate "meu aplicativo X e melhor que o seu aplicativo Y”. As vezes, lembra o velho debate filosofico que muitos de nos tivemos no parquinho por volta dos cinco anos:"Ah, meu pai pode bater no seu!"Embora o debate saudavel muitas vezes possa trazer novas ideias, esse debate sobre que software e melhor quase nunca e construtivo ou facilmente resolvido. 0 melhor e perceber que isso nao tem a ver com o software. 0 que importa realmente e a habilidade, a tecnica e a solugao criativa do artista em obter um jogo completo. Se voce realmente entender os princfpios do 3D, nao importa qual software usa porque, no final das contas, e uma preferencia pessoal. Por exemplo, nao sou um usuario Blender avangado. Acho que e um otimo programa e contribui para uma boa solugao ao preencher as lacunas de animagao do modo, embora em meu trabalho diario eu useo Maya para o movimento

92

Como fizemos com os capitulos anteriores, veremos o"porque"antes de entrarmos no "como" estudando como as malhas dos ossos e pele devem ser otimizadas para o hardware do iPhone e do iPad, e como as malhas da pele funcionam no Unity iOS. Entendendo primeiro o porque, seremos capazes de construir corretamente um personagem com rig para usar em um jogo destinado as pla­ taformas do iPhone e do iPad. Comegaremos dando uma olhada nos tamanhos de objeto correspondentes entre o modo, o Blender e o Unity iOS. Mais uma coisa que vale mencionar e que, mesmo que voce nao seja usuario do Blender, este capitulo contera informagoes importantes para mover um perso­ nagem com movimento de camera e revesti-lo para o uso no Unity iOS e no iPho­ ne. As informagoes contidas neste capitulo podem ser facilmente portadas para outros aplicativos 3D, como o Maya, o 3DS Max, o LightWave 3D, o Softimage ou o Cinema 4D. Nao deixe de ler a segao lateral "Meu pai pode veneer o seu"

Correspond end o o tam an h o do objeto Para colocarmos nossos modelos devidamente no Unity iOS, e preciso primei­ ro ter certeza de que estabelecemos um fluxo de trabalho correto para man­ ter o tamanho do objeto correto quando formos do modo para o Blender no Unity iOS. No Capitulo 2, analisamos as diferengas de dimensionamento entre o modo e o Unity iOS, e propusemos uma solugao para compensar a maneira como os diferentes programas lidam internamente com o tamanho do obje­ to em termos de unidades de medida. Agora adicionaremos outra variavel a equagao, por assim dizer, quando incorporarmos o Blender. O importante a entender com um pipeline do modo para o Blender e que, dadas as unidades-padrao internas, um objeto modo tera a metade do tamanho deum objeto Blender padrao quando for importado para o Blender. Meu trabalho e criar todos os objetos usando o modo e usar o Blender para fazer o movimento de camera, revestimento e animar personagens revestidos, ja que isso atualmente nao e possfvel com o modo. O importante a entender com um pipeline do modo para o Blender e que, dadas as unida­ des-padrao internas, um objeto modo tera a metade do tamanho de um ob­ jeto Blender padrao quando for importado para o Blender. Lembre-se dos ca­ pitulos anteriores de que, no modo, estabelecemos o Sistema Padrao do Unity iOS para estar em unidades de jogo (Game Units) e trabalhariamos com uma definigao de 1 metro por unidades de jogo. Na Figura 5.1, voce pode ver que um cubo do modo padrao configurado com essas especificagoes tem exatamente a metade do tamanho de um cubo Blender padrao. E importante entender essa relagao, pois o Tater sera exportado do Blen­ der para o Unity iOS e precisarei saber como definir corretamente a opgao Scale Factor nas configuragoes FBX Importer. Entender a proporgao de tama­ nho entre os objetos modo e Blender dara informagoes vitais necessarias para inserir o valor correto. Sabemos do Capi'tulo 2 que, ao importar um metro pa­ drao por objeto Game Unit do modo para o Unity iOS, precisamos ajustar o Fator de Escala no FBX Importer como 0,01. Tambem precisamos estabelecer essa mesma configuragao basica para os objetos Blender importados para o

FIGURA 5.1 Um cubo modo padrao tem a metade do tamanho de um cubo Blender padrao.

Unity iOS. Na Figura 5.2, voce pode ver que um cubo Blender padrao impor­ tado para o Unity iOS via FBX com um Fator de Escala 1,0 (sem dimensionamento aplicado) e duas vezes maior que um cubo Unity iOS padrao. Isso me diz que preciso configurar o fator de escala com 0,5 para que meus objetos Blender tenham o mesmo tamanho dos objetos Unity iOS padrao. Configuran­ do o Fator de Escala com 1,0, nenhum dimensionamento e aplicado ao objeto

de camera e a animagao. Entretanto, tendo uma base forte no processo por tras do movimento de camera e, omais importante, no processo para a criagao de malhas de revestimento de pele para o Unity iOS e o iPhone, posso ir rapidamente do Maya para o Blender sem grandes problemas. Sei o que precisa ser feito e nao preciso deixar que o software dite o que posso e o que nao posso realizar. Encorajo-o a nao se envolver em debates de software; lembre-se de que e o artista que estci no controle e o software 6 apenas uma ferramenta. Um bom prindpioaadotare sempre se concentrar nos fundamentos do 3D e deixar o software tornar-se um pensamento secundario

FIGURA 5.2 Em um fator de escala 1,0, um cubo Blender e duas vezes maior que um cubo Unity iOS.

93

Criando arte de jogos 3D para iPhone com Unity

importado e essa e uma otima maneira de avaliar como o sistema de unidade interno do aplicativo 3D se relaciona com o Unity iOS. Lembre-se: importar para o Unity iOS e o objetivo e 6 melhor para correspon­ der todos os seus objetos 3D na escala padrao do Unity. Tudo bem, estabelecemos que os objetos Blender sao duas vezes maiores que os objetos Unity iOS e precisamos ajustar o Scale Factor para 0,5 na impor­ tagao; no entanto, ha uma ressalva para essa configuragao ao trabalhar com objetos modo exportados do Blender. Lembre-se de que nossos objetos modo sao duas vezes menores que os objetos Blender. Se exportarmos nossos objetos criados no modo a partir do Blender, o fator de escala 0,5 (Scale Factor) estara incorreto. Como os objetos modo sao duas vezes menores que os objetos Blen­ der, o processo de importar e trabalhar com o objeto modo a partir do Blender atuara como uma "operagao de pre-dimensionamento"; quando exportarmos o objeto criado pelo modo a partir do Blender, ele ja tera sido redimensionado e se tornado duas vezes menor e, entao, poderemos configurar Scale Factor no FBX Importer como 1,0 ao importar para o Unity iOS. Na Figura 5.3, voce pode ver um cubo criado pelo modo exportado do Blender e que corresponde a es­ cala do cubo Unity iOS padrao exatamente com um fator de escala 1,0.

FIGURA 5.3 Mostre o cubo criado pelo modo com o mesmo tamanho do cubo Unity iOS no Fator de Escala 1,0.

Portanto, temos agora o fluxo de trabalho correto para dimensionar nossos objetos Blender e modo para combinar perfeitamente com a escala padrao do Unity iOS. Voce pode ver as configuragoes corretas na tabela da Figura 5.4.

Suporte Blender do Unity iOS e fluxo de trabalho FBX Em relagao a animagao Blender, o Unity iOS suporta todos os nos com a posi­ gao, a rotagao e a escala. Os pontos pivotantes que voce configura no Blender, bem como os nomes do objeto, tambem sao importados. A animagao da ma­ lha de ossos e o revestimento do Blender tambem sao suportados. 94

Criando arte de jogos 3D para iPhone com Unity

modo

Blender 11 ridoom odopara Blender

Fator de escala

Fator de escala

Fator de escala

0.01

0.5

1.0

fig u ra 5.4 Diagrama das diferentes configuragoes do fator de escala (Scale Factor).

Usando o FBX 0 Unity iOS vai importar um arquivo ".blender" e converte-lo no backend usan­ do o FBX Importer do Blender. Mas esse nao e o fluxo de trabalho que adoto com o Blender e o Unity iOS. Em vez disso, prefiro exportar o FBX a partir do Blender. A razao e basicamen­ te uma preferencia pessoal. No cotidiano, trabalho basicamente com o modo, o Maya, o Motion Builder e o Mudbox, e ha algum tempo estabeleci o FBX como o melhor metodo para enviar objetos via meu pipeline. Gosto de ter o arquivo intermediario FBX disponivel para o caso de precisar leva-lo para outro aplicativo e nao precisar abrir o Blender para criar um arquivo FBX nessas situagoes. Uma importante questao relacionada ao Blender e a incapacidade de im­ portar um arquivo FBX. Felizmente, so estou usando o Blender para a anima­ gao de personagens e isso nao representa um grande problema, mas faz com que eu acrescente um passo extra ao meu pipeline, que e exportar, e o OBJ do modo. Assim que o Tater ficou pronto para o movimento de camera, exportei um OBJ do modo para que pudesse colocar o modelo no Blender para o movimento de camera e animagao. Um grande problema com os arquivos OBJ e que suportam apenas um conjunto UV. Mas, como o meu personagem nao contem UVs sobrepostas, e normalmente um personagem nao contera, so precisei de um conjunto UV. Como voce se lembrara do Capitulo 4, ao criar o nivel, precisamos ter uma UV separada porque estavamos usando UVs sobre­ postas para a disposigao de blocos lado a lado. Voce nao pode criar correta­ mente os mapas de luz com UVs sobrepostas. Com o Tater, nao usei um shader do mapa de luz no Unity iOS e, portanto, nao precisei do segundo conjunto UV. Em vez disso, transformei em quadros-chave com a operagao de bake o mapa de luz no mapa de textura difuso, como mostrado na Figura 5.5. O baking do mapa de luz no mapa de textura difuso nao e apenas uma solugao para o meu problema do conjunto com varias UVs com o OBJ, mas tambem e uma solugao viavel como um todo, no que diz respeito a redugao da memoria de textura. Em vez de usar um shader de mapa de luz no Unity iOS, voce pode usar um shader de luz de vertice e um mapa de textura difuso, como mostrado na Figura 5.6. Isso reduz, de fato, o numero de mapas de tex­ tura necessarios para oTater. O fluxo de trabalho completo para os recursos 3D do Tater e mostrado no grafico na Figura 5.7.

Blender eCollada Alem do formato OBJ, voce tambem pode utilizarum pipeline Collada entre o Blender e o modo, uma vez que ambos os aplicativos podem leregravaro formato Collada. 95

FIGURA 5.5 No Photoshop, o mapa de luz e multiplicado sobre a textura difusa. £ o que uma instrugao do mapa de luz faz.

Entendendo as m alhas de pele no Unity iOS Nesta segao, veremos os aspectos tecnicos do uso das malhas de pele no Unity iOS. Como voce viu nos capftulos anteriores, e muito importante compreender o processo e como ele se relaciona com o Unity IOS e o hardware do iPhone e do iPad. Ter esse conhecimento permite tomar decisoes importantes no processo de movimento de camera e animagao, e pode evitar muita dor de cabega ao otimizar o desempenho do seu jogo.

Revestimento otimizado pelo VFP Como analisado no Capi'tulo 1, o iPhone e o iPad tem um coprocessador VFP muito rapido para lidar com as operagoes matematicas complexas. 0 Uni­ ty iOS otimiza o revestimento atraves do coprocessador VFP e e muito mais rapido que o revestimento GPU. No iPhone 4, no 3GS e no iPad, o Unity iOS pode revestir ate 5 milhoes de vertices por segundo. Mas o Unity iOS supor­ ta apenas os caminhos de revestimento especificos otimizados pelo VFP, e e muito importante saber o que esses caminhos sao para que voce possa ter a certeza de aproveita-los em seu projeto. Se nao decidir usar um desses caminhos otimizados, o desempenho do revestimento voltara a cair na CPU, que e muito mais lenta. Tambem e importante afirmar que, quanto menos

Criando arte de jogos 3D para iPhone com Unity

FIGURA 5.6 Aqui voce podc vcr um shader colorido por vcrticc quc usa uma textura. A textura contcm informagocs tanto da cor como da iluminagao.

modo - Modele e aplique UV ao Tater - Exporte Tater para O BJ e importe no Blender

1

Blender - Realize movimento de camera e anime/ exporte para o Unity via FBX

Unity - Defina o fator de escala como 1.0 nas configuragoes de importagao do FBX

f ig u r a 5.7 Diagrama do meu fluxo de trabalho do modo para o Blender e para o Unity.

influencias do osso por vertice voce tiver na malha, mais rapidamente o pro­ cesso de revestimento sera geral, entao, novamente, e importante planejar o rig de acordo.

Caminhos de revestimento otimizados No Unity iOS, ha um limite para o numero de ossos que podem influenciar um vertice. Voce nao pode ter mais de 4 ossos por vertice, e ha 3 caminhos de re­ vestimento otimizados pelo VFP no Unity iOS, que sao direcionados para 1,2 e 97

Criando arte de jogos 3D para iPhone com Unity

FIGURA5.8 Este diagrama mostra os caminhos de revestimento otimizados peloVFR

Caminhos de revestimento de pele otimizados por VFP ________________________ I

Osso 1

Osso 2 J -j

Osso 4

-1 Conjunto UV

- 2 Conjuntos UV

- 2 Conjuntos UV

- Iluminado (Skin Normals)

- Iluminados (Skin Normals)

- Iluminados (Skin Normals)

Nao iluminado

FIGURA5.9 A opgao Auto-Normalize equilibrara quaisquer pesos sobrepostos para 1,0.

98

4 influencias do osso. Cada um desses caminhos tem certos criterios a atender para ser otimizado pelo coprocessador VFP. Na Figura 5.8, voce pode ver um diagrama que mostra os caminhos otimizados e os criterios que eles devem seguir. Primeiro, temos o caminho com um osso que, para utilizar o VFP, deve ter apenas um conjunto UV e ser iluminado (utilizando as normais da pele) na cena. Para o ca­ minho com dois ossos, a malha pode ser iluminada ou nao e ter ate dois conjuntos UV. Esse e o caminho de revestimento mais comum, por isso o VFP e otimizado com dois conjuntos UV e funciona para acender e apagar os objetos. Finalmente, ha o caminho com quatro ossos; ele deve ser iluminado e tambem usar ate dois conjuntos UV. Para realmente usar os caminhos de revestimento VFP, voce pre­ cisa ter certeza de que seguira os criterios. Por exemplo, ao atribuir os pesos da pele ao seu personagem no aplicativo 3D, como o Blen­ der, voce precisa certifkar-se de que cada vertice tem uma influencia ossea maxima de 4. Alem disso, o Blender 2.5 possui um recurso Auto-Normalize para equilibrar quaisquer pesos sobrepostos, com valor total de 1,0, como o Maya faz automaticamente. Ele pode ser ativado no menu de ferramentas, pressionando a tecla T no modo Weight Paint, como mostrado na Figura 5.9. Assim que o personagem tiver sido importado para o Unity iOS, voce precisara ter certeza de que as configuragoes no Skinned Mesh Renderer estao corretas para usar um dos caminhos de revestimento do VFP. Vejamos um exemplo com o Tater. Se eu quisesse utilizar quatro ossos por vertice, que e definido no Skinned Mesh Renderer Component atrav^s da configuragao Quality, tambem precisaria ativar Skin Normals para corresponder aos criterios para o uso do caminho de revestimento otimizado pelo VFP em um caminho de quatro ossos, como mostrado na Figura 5.10. Reduzindo a configuragao Quality no Unity iOS, voce tambem pode ganhar de­ sempenho a custa de perder os detalhes da animagao.

O Inspector 1^1 0 Taq

[ lighim ap Eduor

- •=

Pelvis

~ ] □ Static * Layer

Unuggtd

Model

Dtfault

Im it

Stltci

Optn

Q O,

T ■ —. Transform Position X -3.8 4l2 69 e-0 9

Y -6.406623e-08

Z 0.08491445

Rotation X 2.023056

Y 90

Z 180

Scale X|1

z

|Y|1

T L i 3 Skinned Mesh Renderer Cast Shadows Receive Shadows ► M - ltrrU U Quality Update When Offscreen Skin Normals M » ll

1 Q o ,

SI

4 Bones

4 *

□ tit]

FIGURA 5.10 Aqui a qualidade foi configurada com quatro ossos e a opgao Skin Normals esta ativada.

M o vim e n to de camera em torno do Tater no Blender Esta segao sera dedicada a criagao de um rig no Blender. Novamente, nao sera um tutorial passo a passo. Ha livros inteiros dedicados ao movimento de ca­ mera e animagao do personagem, e esse e um tema muito profundo. Em vez disso, o foco desta segao sera fornecer a informagao espedfica para a criagao de um personagem com rig para o Unity iOS e um projeto destinado aos iDe­ vices. Dependendo do seu jogo, seu rig ou personagens poderiam ser muito diferentes dos meus, e sera mais util detalhar os aspectos importantes do rig e como ele se relaciona com o iPhone e o Unity iOS.

Os principios basicos do movimento de camera do iPhone e do iPad Assim como na contagem dos vertices, com os ossos voce precisa comprometer-se com o conceito de "menos e mais". Voce precisa reduzir a quantidade de ossos utilizados por personagem. Por exemplo, o manual do Unity iOS sugere que nao se use mais de 30 ossos. Por exemplo, o esqueleto que foi construfdo para o Tater contem 21 ossos, como mostrado na Figura 5.11. 0 objetivo e reduzir o nivel de complexidade de sua configuragao, mas ainda assim ser capaz de executar as animagoes determinadas para o per­ sonagem. Por exemplo, as maos do Tater foram modeladas como maos cerradas e certamente nao ha nenhuma necessidade de criar ossos para cada dedo individual. Observe na Figura 5.12 que as maos consistem em apenas um osso.

Criando arte de jogos 3D para iPhone com Unity

FIGURA 5.11 A imagem mostra o esqueleto basico doTater.

fnrt Ortho 10 C crtim am

(250 >/Utnatum

Adicionar ossos ao Blender Armature que voce nao esta usando para deformar a malha resulta em perda de desempenho sem sentido. Voce nao deseja induir esses ossos nos Vertex Groups, de modo que pode informar para que nao deformem a malha, desativando a opgao Deform em Bones Properties, como mostrado na Figura 5.13. Basicamente, isso remove qualquer influencia no osso. Como voce vera no Capi'tulo 6, informaremos qualquer controlador que os ossos usam para a cinematica inversa (IK) e as restrigdes para nao influenciar a malha, desativando a opgao Deform para esses ossos. Quando comecei a usar o Blen­ der, fiquei surpreso pelo fato de os ossos nao serem considerados objetos em si. Eles sao, na verdade, componentes do objeto Armature, e todo rigging deve ser feito com os ossos e as restrigoes contidas em um unico objeto Armature. Com o Maya ou o 3ds Max, voce pode restringir os ossos ou torna-los filhos de Curves ou outros objetos; no entanto, com o Blender, isso pode causar problemas de dependencia. Em contrapartida, quaisquer objetos de controle para a cinemati­ ca inversa ou restrigoes sao feitos com ossos no objeto Armature. Por causa dis­ so, voce precisa certificar-se de que os ossos do controlador que voce cria foram usados para as restrigoes e a cinematica inversa. Voce precisa se certificar de que esses ossos nao estao influenciando os vertices da malha. Novamente, o metodo mais facil e dizer ao osso do controlador para nao influenciar o Vertex Group ou o peso, desativando sua opgao Deform.

100

Criando arte de jogos 3D para iPhone com Unity

Outra boa opgao para controlar a influencia do osso em um vertice e usar a ferramenta Clean Weight, que pode ser encontrada em Tool Shelf (tecla T), no modo Weight Paint, como mostrado na Fi­ gura 5.14. A ferramenta Clean Weight removera os vertices com baixo peso do grupo atual e basicamente removera o osso da influencia da malha. Essa ferramenta e util para controlar quantos ossos estao influenciando um vertice em particular. Lembre-se: no Unity iOS e na maioria dos mecanismos do jogo nesse sentido, nao podemos ter uma influencia do osso com mais de quatro ossos por vertice. Essa ferramenta pode ajudar a obter ossos perdidos que estejam afetando determinado vertice com apenas um pequeno valor de peso, o que pode dificultar sua detecgao ao pintar pesos. Agora que discutimos os princi'pios essenciais para a criagao de ossos, veremos como criar alguns ossos para o Tater, bem como pin­ tar os pesos. Lembre-se, ha alguns pontos importantes a serem considerados ao criar o rig. Reduza a quantidade de ossos. Apenas use o que e absolutamente necessario e nao exceda os 30 ossos totais. Alem disso, reduza a influencia maxima dos ossos a nao mais de qua­ tro por vertice. Finalmente, desative os ossos que sao usados para a

FIGURA 5.13 Voce pode dizer a um osso para

nao deformar desativando a opgao Deform. Isso fara com que ele nao afete a malha.

101

Criando arte de jogos 3D para iPhone com Unity

cinematica inversa e as restrigoes, pois voce nao quer que esses ossos influenciem a malha. Na Figura 5.15, pode-se ver um diagrama que mostra esses principals pontos.

Criando o esqueleto basico Durante a fase de modelagem do Tater, ele foi construido na classica "pose T" com o objetivo de usar o rigging em torno do personagem, como mostrado na Figura 5.16. £ importante ressaltar que os bragos e as pernas foram curvados previamente para aplicar a cinematica inversa (IK) nos ossos que compoem as cadeias dos bragos e pernas, como mostrado na Figura 5.17. A razao e que essa curva previa nas areas de articulagao da a op­ gao IK Solver o angulo preferido com o qual trabalhar ao calcular as rotagoes dos ossos. Ha maneiras diferentes de criar um esqueleto para um persona­ gem. Nesta segao, discutiremos como criar o esqueleto basico e, depois, aplicar-lhe os pesos de pele. No Capi'tulo 6, falaremos sobre a adigao de ossos extras, que servirao como controles de animagao, e ossos destinados a cinematica inversa. A maneira como voce cria um esqueleto para o personagem fica inteiramente a criterio dos requisitos do projeto e do nivel de animagao necessaria para o seu personagem. Para o aplicativo demo do livro, o Tater precisara ter ciclos de animagao basicos, como correr, caminhar e atirar. E importante afirmar que muito pode ser obtido atraves de um layout simples do esqueleto. Tal como acontece em todos os aspectos do desenvolvimento do jogo, isso se resume a um delicado equilibrio de qualidade versus desempenho. O objetivo e usar uma quantidade suficiente de ossos para obter as deformagoes necesscirias e ser capaz de manter o desempenho desejado para o projeto. FIGURA 5.14 A ferramenta Clean Weight pode ser encontrada em Tool Shelf no modo Weight Paint.

Otim iza 9 des dos ossos Reduza a quantidade de ossos Nao exceda mais de 30 ossos por personagem

Nao mais que 4 ossos por vertice

FIGURA 5.15 Diagrama dos principals pontos para usar os ossos em seus personagens..

102

FIGURA 5.16 A poseT e a pose padrao para a criagao de ossos.

O primeiro passo foi criar ossos na linha central, que sao o quadril, a coluna, o torax e os ossos da cabega. Comecei com o quadril, definindo o cursor 3D para a posigao correta na regiao do quadril. Com o Blender, uso o Maya predefinido para o mapeamento do teclado, ja que estou muito mais familiarizado com a interface do usuario Maya. Dito isto, coloco o cursor 3D clicando com o botao direito do mouse, uso Shift + S para ativar o menu de"aderencia a grade" (snapping) e seleciono Cursor to Grid para garantir aderencia do cursor diretamente ao centra da grade, como mostrado na Figura 5.18. Com a viewport 3D mostrando a parte frontal, adicionei um objeto Ar­ mature para criar o esqueleto. Com o primeiro osso criado, eu o posicionei na regiao do quadril e o renomeei "Pelvis", como mostrado na Figura 5.19. Criei todos os ossos com visualizagoes ortograficas para ajudar a alinhar correta­ mente as rotagoes dos ossos. Os ossos centrais foram extrudados a partir do quadril pressionando a tecla E. Repeti a extrusao tres vezes para criar os ossos da coluna vertebral, torax e cabega, como mostrado na Figura 5.20. A partir de uma visao lateral, ajusto cada osso de modo que as pontas fiquem localizadas em edge loops, e os ossos fiquem localizados perto das cos­ tas, curvados como uma verdadeira coluna para ajudar a criar deformagoes mais claras durante a animagao, como mostrado na Figura 5.21. 103

Criando arte de jogos 3D para iPhone com Unity

FIGURA 5.17 Aqui voce pode ver que os bragos foram modelados com uma“curva previa" ("Pre-bend") nos cotovelos para que a cadeia de ossos dos bragos pudesse ser criada com cssa curvatura.

Em seguida, preciso criar os ossos dos bragos e pernas. Pode-se criar um lado dos ossos da perna e do brago, e em seguida espelh^-los; no entanto, optei por usar a fungao X-Axis Mirror da Armature para criar os ossos automaticamente em ambos os lados enquanto trabalho. Na Figura 5.22, voce pode ver que, com o osso do torax selecionado e a opgao X-Axis Mirror ativada nas opgoes Armature, pressionei Shift + E para fazer extrusao espelhada dos ossos para o ombro, o biceps, o antebrago e a mao. Agora os ossos do ombro estao conectados ao osso do torax, o que nao quero. Para separar os ossos do ombro, pressionei Alt + P e escolhi Disconnect Bone no menu e, entao, separei os ossos, como mostrado na Figura 5.23. Gostaria de chamar a atengao para a colocagao dos ossos do brago, como mostrado na Figura 5.24. Repare que coloquei a ponta dos ossos nos edge loops dos bragos. Note tambem que ha uma boa "curva previa" entre o biceps e o antebrago para ajudar na cinematica inversa e que a ponta do osso do biceps e colocada proximo ao cotovelo real da malha para ajudar nas deformagoes. Em seguida, fui para as pernas. Para usar a fungao X-Axis Mirror de Arma­ ture, extrudei o primeiro osso da perna, a coxa, a partir do osso do quadril, e separei-os usando Alt + P, como fiz com os ossos do ombro e brago. En­ tao, posicionei a coxa na perna e continuei a fazer a extrusao espelhada da 104

Criando arte de jogos 3D para iPhone com Unity

FIGURA 5.18 0 cursor 3D e colocado

Fnjrit O rth o C e n tim e te r s

S e le c t io n t o G n d

na regiao do quadril para definir o ponio em que a Armature sera criada. Fazer o cursor aderir a grade garante que ele esta alinhado com o centra da grade.

S e le c tio n t o C trs o r

Curvy t o

S e le c t e d

c l n o r to te e te r

C u-sor t o A rriv e S n a p c u rs o r t o n e a re s t grwl n od e

panturrilha, pe, dedo e pe usando Shift + E. Na Figura 5.25, voce pode ver os ossos das pernas completos. Nesse ponto, precisei renomear todos os ossos. Usei a convengao de atribuigao de nomes tipica de anexar "L" (esquerda) ou ".R" (direita) ao nome do osso, dependendo do lado em que o osso estava localizado. Isso e importante para pintar pesos espelhados e usar as fungoes Copy Pose. Tambem criei tres grupos de ossos para poder codificar com cor os ossos, para indicar sua orientagao, ou seja, os ossos do lado esquerdo sao azuis, os ossos do lado direito sao vermelhos e os ossos no centro sao verdes. Para criar um grupo de ossos, selecione os ossos em Pose Mode e clique no botao de adigao na segao Bone Groups das propriedades Armature, depois escolha uma cor de tema no menu Color Set, como mostrado na Figura 5.26. Voce tambem precisa ter a opgao Colors ativada na segao Display das propriedades Armature. Codificar os ossos com cores ajuda a organizar melhor a cena.

105

Criando arte de jogos 3D para iPhone com Unity

FIGURA 5.19

0 esqueleto ^ criado e o

osso do quadril e posicionado.

Criando arte de jogos 3D para iPhone com Unity

FIGURA 5.21 Assim que OS OSSOS sao criados, voltoe os posiciono corretamente.

FIGURA 5.22 Os ossos dos bragos

passaram pela extrusao espelhada usando a tecla Shift + E com a opgao X-Axis Mirror em Armature.

107

Criando arte de jogos 3D para iPhone com Unity

FIGURA 5.23 Desconectei os ossos do ombro usando Alt + P e depois os posicionei.

FIGURA 5.24 Os ossos do brago sao colocados nos edge loops da maiha.

108

Criando arte de jogos 3D para iPhone com Unity

FIGURA 5.25 As pernas foram criadasda mesma forma que os ossos do brago.

FIGURA 5.26 Codificar com cores seus ossos ajuda a organizar a cena.

109

Criando arte de jogos 3D para iPhone com Unity

Ajustando as rotagoes dos ossos Depois de os ossos serem criados, e necessario ajustar suas rotagoes para que os eixos fiquem alinhados corretamente. O objetivo e ter certeza de que todos os ossos estejam girando em torno do mesmo eixo. Por exemplo, na Figura 5.27, voce pode ver que todos os ossos centrais estao alinhados e girando em torno do eixo Z no Pose Mode.

FIGURA 5.27 As rotagoes dos ossos selecionadas sao alinhadas no eixo Z.

Para alinhar as rotagoes dos ossos, voce pode usar Alt + R no Edit Mode, para alinhar a rotagao de um osso selecionado ou ajustar a configuragao Roll na janela Properties (tecla N). Na Figura 5.28, pode-se ver que a opgao Roll do osso do antebrago foi ajustada de modo que o eixo X seja usado para curvar o brago no cotovelo em um angulo natural, o que significa que o eixo X foi alinhado paralelamente ao antebrago. Novamente, e importante que todas as rotagoes dos ossos sejam alinha­ das corretamente. Por exemplo, na Figura 5.29, ve-se um exemplo do osso do antebrago com rotagao incorreta, o que resulta na ausencia de eixos alinhados paralelamente ao antebrago, nao permitindo, assim, que se curve corretamen­ te o brago. Voce pode realmente ver a diferenga comparando a Figura 5.29 com a Figura 5.28.

110

Criando arte de jogos 3D para iPhone com Unity

FIGURA 5.28 Aqui usei a propriedade K i t titem

Roll para ajustar a rotagao do osso para o antebrago.

Z tiW lc w

FIGURA 5.29 A rotagao do osso nao esta alinhada, o que dificulta obtcr a curva corretamente.

Ill

Criando arte de jogos 3D para iPhone com Unity

Corrigindo o osso pelvico para o balango do quadril A fim de configurar corretamente o quadril de modo que ele se movimente direito, precisei adicionar outro osso. A razao disso e que o pivo de um osso estara localizado na extremidade. Mas quero mudar o eixo do osso pelvico para que ele gire mais na zona do quadril do modelo. Primeiro, dupliquei o osso pelvico pressionando Shift + D. Em seguida, chamei esse osso de PelvisRotHelper, depois selecionei o osso pelvico e mudei sua diregao pressionan­ do Alt + F ou acessando o comando Switch Direction no modo de edigao via menu Specials, que pode ser ativado pressionando a tecla "W", como mostra­ do na Figura 5.30. Em seguida, tornei PelvisRotHelper filho de Pelvis com a opgao Keep Offset, como apresentado na Figura 5.31. Por fim, o primeiro osso Spine tornou-se filho da PelvisRotHelper com a opgao Connected, mostrado na Figura 5.32. Finalmente, os ossos da perna (Thighs) tornaram-se filhos do osso Pelvis. Essa configuragao cria um belo balango do quadril, pois a rotagao do osso pel­ vico esta localizada logo abaixo do primeiro osso da coluna e coloca o eixo da rotagao diretamente na zona do quadril da malha, como exibido na Figura 5.33. Desativando a configuragao Inherit Rotation O ultimo passo na construgao do rig e desativar a configuragao Inherit Ro­ tation do primeiro osso da coluna e dos ossos do peito e ombros. Dizendo a esses ossos para nao herdar as rotagoes de seu pai, o osso efetivamente

FIGURA 5.30 A diregao do osso

pelvico foi mudada para que seu eixo fique no lugar certo para produzir um belo balango do quadril.

112

FIGURA 5.31 0 PelvisRotHclpcr e tornado filho do osso Pelvis.

FIGURA 5.32 0 primeiro osso Spine e tornado filho de PelvisRotHelper.

permanecera posicionado quando o osso pai for girado e fornecera uma articulagao muito melhor no esqueleto. Por exemplo, na Figura 5.34, voce pode ver a diferenga entre os ossos do ombro herdando e nao herdando as rotagoes de seu osso pai, o osso Chest. Na verdade, isso e o mesmo que criar um osso de articulagao (Hinge bone).

Criando arte de jogos 3D para iPhone com Unity

FIGURA 5.33 Invertendo o osso

pelvico, sua rotagao e colocada no local desejado para a rotagao do quadril.

Herda as rotapoes

Nao herda as rotacoes

FIGURA 5.34 Veja a difercnga entrc

urn osso que herda e nao herda as rotagoes do osso pai.

Pintando pesos A primeira coisa da qual deve estar ciente a respeito do Blender e que voce precisa ter certeza de que todo vertice e configurado para ter um peso de osso. Se algum um dos vertices nao tiver peso de osso, quando for importada a malha para o Unity iOS ele nao aparecera na viewport.

114

Criando arte de jogos 3D para iPhone com Unity

Certifique-se de que cada vertice em seu modelo tenha peso de osso. Se algum dos vertices nao tiverpeso de osso, quando voce importar a malha para o Unity iOS ele nao aparecera na viewport. Para se certificar de que cada vertice tem um valor de peso, seleciono "With Automatic Weights" ao tornar a malha filha de Armature. Isso nao so pesa cada vertice com um osso, mas tambem fornece um bom ponto de partida para pintar os pesos. A partir daqui, percorro cada grupo de vertices e ajusto os pesos com as ferramentas Weight Painting para ajustar como cada osso esta afetando a malha. 0 obje­ tivo e minimizar qualquer deformagao grosseira na malha certificando-se de que nao mais que quatro ossos estejam influenciando um unico vertice. Algumas opgoes muito uteis nas quais prestar atengao especial ao pintar os pesos sao Auto Normalize e X-Axis Mirror, como mostrado na Figura 5.35. O recurso Auto Normalize vai normalizar automaticamente cada vertice enquanto voce pintar, para que nao pinte acima de um peso 1,0. A fungao Clean Weights, tambem encontrada em Tool Shelf no modo Weight Paint, e boa para se certificar de que um unico vertice tenha influencia maxima de quatro ossos. A ferramenta Clean Wei­ ghts removera os vertices com valores de baixo peso do grupo de vertices atual. Por exemplo, ao criar o osso PelvisHelper, eu me esqueci de desativar a opgao Deform do osso. Esse osso foi criado com o unico proposito de ajudar o quadril na rotagao, e nao precisa in­ fluenciar a malha. Se um osso nao precisar influenciar diretamente a malha, sera melhor, em termos de desempenho, assegurar que ele nao esteja influenciando a malha. Na Figura 5.36, voce pode ver que, com o grupo de vertices PelvisRotHelper selecionado, usei Clean Weights para eliminar qualquer influencia sob o limite definido. Como alternativa, eu poderia ter excluido o grupo de vertices de PelvisRotHelper, mas esse exemplo ajuda a mostrar a utilidade da ferramenta Clean Weights. A ferramenta Clean Wei­ ghts e semelhante a ferramenta Remove Influence encontrada no Maya, e utilizar essa ferramenta no Blender imita o meu fluxo de trabalho Maya, mais familiar para o rigging. Para realmente pintar os pesos no Blender, conto muito com a opgao X Mirror. Essa opgao permite refletir os valores de peso do vertice de um grupo para o outro no eixo X. Por exemplo, posso curvar a perna esquerda e, com a opgao X Mirror ativada, ajustar os pesos da perna direita, sabendo que essas mudangas serao espelhadas no lado esquerdo da malha. Isso e extremamente util, pois permite usar um dos lados da malha para marcar as deformagoes ao ajustar os pesos do outro lado que nao esta sendo apresentado. Ajustando os pesos no lado que nao esta sendo apresentado, e muito mais facil ajustar os pesos nos vertices ao ver meus ajustes instantaneamente na metade posada da malha, como mostrado na Figura 5.37.

FIGURA 5.35 As opgoes Auto

Normalize e X-Axis Mirror sao encontradas em fool Shelf no modo Weight Paint.

115

FIG U RA 5 .3 6 A opgao Clean Weights foi usada para remover qualquer influencia que PelvisRotHelper tivesse na malha.

FIG U RA 5.3 7 A opgao X Mirror para pintar o peso e inestimavel para ajustar pesos. Aqui voce pode ver que posso trabalhar na metade da malha e ver as

alteragoes espelhadas no lado posado da malha.

116

Resum o Neste capitulo, discutimos varios aspectos fundamentais da criagao de ossos e pintura dos pesos que dizem respeito ao iPhone e ao Unity iOS e falamos sobre o uso do Blender em um pipeline do modo para o Blender; no entanto, as tecnicas e os principios analisados neste capitulo podem ser utilizados em qualquer pacote 3D. Falamos sobre a importancia do hardware iDevice e como o Unity utiliza os caminhos de revestimento de pele otimizados pelo VFP e o que voce precisa fazer para ter certeza de aproveitar essas otimizagoes. Alem disso, discutimos a importancia da contagem de ossos e de certificar-se de utilizar uma influencia maxima nao superior a quatro ossos por vertice. Por fim, examinamos o esqueleto do Tater a medida que era criado no Blender e algumas ferramentas de peso uteis, como Clean Weights e X Mirror. No Capftulo 6, focaremos a criagao de ossos controladores de animagao adicionais e ossos destinados a cinetica inversa (IK). Discutiremos tambem como a animagao FBX e importada pelo Unity.

Anima^ao usando o Blender Cinematica inversa e animagao basica

No Capi'tulo 5, vimos em profundidade a criagao de ossos usando o Blender, pois eles se relacionam a animagao de um jogo de personagens para o Unity iOS ou jogo iPad. Neste capitulo, continuaremos de onde paramos com o Ta­ ter e terminaremos o rig em torno dele. Veremos como adicionar restrigoes e cinematica inversa (Inverse kinematics - IK) no Armature e tambem faremos uma organizagao adicional ao rig para facilitar as coisas ao animar. Assim que o trabalho de rig estiver concluido, falaremos sobre como criar animagoes para nosso personagem no Blender e exporta-las para um arquivo FBX para usar no Unity iOS. Comegaremos completando o rig em torno do Ta­ ter adicionando as restrigoes da cinematica inversa.

O carregamento da arma do Tater Va para o site de recursos para ver o video completo deste capitulo.

C o m p le tan do o rig: adicio n an d o cinem atica inversa Normalmente, em estudios maiores, um diretor tecnico ou, mais especificamen­ te, intitulado DT de personagens, lida com o rigging. E verdade que o rigging em torno de um personagem pode ser um processo bem dificil e tecnico. Mas descobri que, em um primeiro momento, o rigging e muito parecido com o de es­ crever script no sentido de que a maioria das pessoas, inclusive eu, fica cansada Creating 3D Game Art for the iPhone with Unity. DOI: 10.1016/B978-0-240-81563-3.00006-1 Copyright 9 2011 Elsevier, Inc. Todos os direitos reservados.

119

ate realmente chegar la e ver que, embora seja um processo tecnico, ha diferentes graus de dificuldade, e algumas etapas sao muito mais faceis que outras. Examinemos isso dessa maneira: ha uma grande diferenga entre programar um sistema operacional inteiro versus escrever um script para girar um objeto em seu jogo iOS Unity. Por essa mesma razao, ha uma grande diferenga entre criar um rig para um personagem de longa-metragem versus um rig que permita criar animagoes simples com corridas, saltos e tiros para o seu jogo. Sim, voce quer que as anima­ goes do jogo tenham otima aparencia e destaquem seu trabalho, mas tambem esta trabalhando com um numero limitado de ossos e seu foco esta em manter a nogao geral do movimento versus captar cada detalhe singular. A questao e que o rig do jogo, especialmente em relagao ao iPhone e ao iPad, nao precisa ter centenas de controles extremamente complexos e sofisticados. Na verdade, quanto mais simples o rig, melhor. Na Figura 6.1, voce pode ver o rig em torno do Tater completo. No rig em torno do Tater, ha quatro IK targets e quatro pole targets usados para girar os joelhos e os cotovelos. Como voce pode ver na Figura 6.1, nao ha muitos controles usados para animaroTater.

FIGURA 6.1 Nesta imagem, voce pode ver os controles usados para animar o Tater. Note que nao ha muitos controles com os quais lidar.

Examinemos os controles para o rig. Primeiro, comegaremos com pes e pernas, que tem um total de cinco controles, como mostra a Figura 6.2. Nos pes, tenho o IK target para as pernas. 0 controlador do pe permite selecionar o pe do Tater e gira-lo no tornozelo, como mostrado na Figura 6.3. O osso do pe esta configurado para permitir ao Tater levantar o calcanhar, como mostrado na Figura 6.4. 0 osso do dedo do pe e utilizado para articular os dedos, como aparece na Figura 6.5. Finalmente, tenho os controles do joelho, que permitem dobrar o joelho, como mostrado na Figura 6.6. Esses controles sao os Pole Vectors (vetores polares) colocados na restrigao IK.

120

Criando arte de jogos 3D para iPhone com Unity

FIG U RA 6.2 Aqui voce pode ver os controles dos pes.

FIG U RA 6.3 0 osso controlador do pe e o principal controle do pe.

121

Criando arte de jogos 3D para iPhone com Unity

FIGURA 6.4 O ossodopeeusado para levantaro calcanhar. Observe que sua diregao foi mudada.

FIGURA 6.5 0 osso do dedo dope permite articular a ponta da bota.

Como voce vera na proxima segao, configurar esses controles dos pes e pernas foi realmente uma tarefa simples, embora resulte em grande quanti­ dade de articulagoes. Esses controles permitem mover a perna, animar as pon­ tas dos dedos do pe, pisar com o calcanhar e dobrar os joelhos, bem como, quando utilizados ao mesmo tempo ajudam a criar uma boa articulagao em ciclos de caminhada (walk cycles) e ciclos de corrida (run cycles). Em seguida, vejamos os bragos. Os bragos tem tambem um IK target. O osso da mao e restrito ao IK target para que ele conduza a translagao e a rota­ gao da mao, e posso oculta-lo da mao real. Basicamente, atraves da remogao do osso da mao como um controle, tenho um controle a menos com o qual me preocupar e um rig mais claro. Em seguida, tenho um controle do coto­ velo, que tambem e um vetor de polo (Pole Vector) na restrigao IK dos bragos, assim como com as pernas. Isso me permite posicionar o cotovelo, como mos­ trado na Figura 6.7.

122

Criando arte de jogos 3D para iPhone com Unity

FIGURA 6 .6 0 osso do joelho e configurado como o Pole Target na restrigao IK da perna. Isso permite dobraro joelho.

f i g u r a 6.7 0 osso do cotovelo esta configurado no pole target na restrigao IK do brago. Isso permite posicionar o cotovelo.

123

Criando arte de jogos 3D para iPhone com Unity

Finalmente, tenho um osso do ombro, que permite mover os ombros para ajudar na animagao envolvendo os bragos, bem como realizando movimentos, como encolher os ombros, conforme mostra a Figura 6.8.

FIGURA 6.8 Nesta imagem, os ossos da clavicula foram girados para produzir o movimento de encolher de ombros.

Os controles finais no rig estao cobrindo a linha central do corpo do Tater. Ha um osso pelvico para controlar os quadris, como mostrado na Figura 6.9. Ha dois ossos da coluna e um osso da cabega para articular a parte superior do corpo, por exemplo, ao girar, como mostra a Figura 6.10. Agora, que apresentamos uma visao geral do rig, vejamos como esses controles foram criados. Comegaremos com as pernas.

Configurando a cinematica inversa das pernas A primeira coisa que precisei fazer foi adicionar outro osso a area do pe, que atuaria como o principal controlador da perna e do pe. Selecionei a extremidade do osso do pe e alinhei o Cursor 3D com a extremidade usando Shift + S e escolhendo a opgao Cursor to Selected. Entao, adicionei um novo osso cha­ mado CNTRL_Foot.L nessa posigao, como mostrado na Figura 6.11. Em seguida, precisei criar um osso chamado IK_Foot.L, que sera usado como o IK target ao utilizar a restrigao IK. Esse osso tambem e criado a partir do tornozelo. Na Figura 6.12, voce pode ver a posigao correta do IK_Foot.2. Ao criar ossos no Blender, e importante adotar convengao de atribuigao de nomes 1 (esquerdo) e .R (direito) para que possa usar as fungoes Copy Pose e Paste Pose. 124

Mm

Criando arte de jogos 3D para iPhone com Unity

FIGURA 6.10 Os ossos localizados na linha central do Tater sao utilizados para girar o corpo.

125

Criando arte de jogos 3D para iPhone com Unity

FIGURA 6.11 Aqui voce pode ver o osso que controla o local e a rotagao do pe.

FIGURA 6.12 Aqui voce pode ver a posigao correta para o osso IK target do pe.

Assim que esses ossos controladores foram posicionados, pude come­ gar a configurar as relagoes. Precisei mudar a diregao do osso do calcanhar escolhendo Switch Direction (Alt + F) no menu Specials, de modo que pudesse usar o osso para levantar o calcanhar. Na Figura 6.13, voce pode ver

Criando arte de jogos 3D para iPhone com Unity

o osso do pe com a orientagao correta. Note que o eixo de rotagao do osso do pe esta localizado nos dedos dos pes, para que o calcanhar possa ser levantado.

Right Otho

F IG U R A 6.13 Mote que, com oo eixo

Centimeters

foi trocado para o osso, o calcanhar pode ser levantado.

jI /

j

/

[

/ '/

i

ft jM

/ V - -

/

\ :

I \

I

(1) ■&t Hduiatinn deviation 0nf1 nu uv rrim triungir> area from geometry triangles if they were uniformally scaled.

Set Defaults FIGURA 8.7 A segao Generate Lightmap UVs abre automaticamente sua malha e cria um segundo conjunto de

UVs para o mapa de luz.

Gere as UVs automaticamente Discutimos a importancia da criagao de UVs adequadas para os objetos com mapa de luz; no entanto, voce pode optar por gerar automaticamente as UVs na importagao em FBX Importer Settings, como mostrado na Figura 8.7. Essa e uma grande economia de tempo, pois voce nao precisa mais se preocupar em criar um segundo conjunto de UVs para o mapeamento de luz em seu progra­ ma 3D. Se ja tem um segundo conjunto de UVs, o Beast ira usa-lo no processo de mapeamento de luz. As opgoes avangadas (Advanced Options), como podem ser vistas na Figu­ ra 8.7, servem para controlar o processo unwrap e minimizar as distorgoes que analisamos anteriormente na segao "UVs corretas do mapa de luz", deste capftulo. Por exemplo, a opgao Area Error ajudara a garantir que a escala entre as UVs e a geometria da malha real permanega proporcional entre si, conforme mostrado na Figura 8.5.

O processo O processo de aplicar o mapeamento de luz e muito simples no Unity iOS. Para comegar, os objetos aos quais o mapa de luz deve ser aplicado precisam ser marcados como Static, o que tambem os torna disponiveis para o batch estatico, como mostrado na Figura 8.8. 192

Criando arte de jogos 3D para iPhone com Unity

: Hierarchy LongBoard_2

© Inspector fi Tag

sectlon2 sectior*3 section4

Lightmap Editor

«l • -

Skyl i flht

0.86

< glEnvlronm ent> SkyLight< /giEnvironroent>

Mudenpe pere IB L

■rrfgnvl-iwaneiifySfcyttytifc/i i eifyAYcrrogenty

< g lIn c o n s S ty > l.0 < / g lIn t« n s lty > < r t ln t e n s it y > l.0 < / r t In t e n s lt y > lg k t — > < sJcyLightColor> 0.7 0.7 0.7

1.0 FIGURA 8.25 Aqui voce podc vcr quc

e possfvel substituir "Skylight" por "IBL" na chave giEnvironment dentro do arquivo XML personalizado do Beast.

< lb lIm a g e F lle > file n a ra e .e x r< / lb lIm a g e F lle > i i uniuen ia c t t . i nmn»

cena em quadros-chave com a operagao de bake, voce perdera suas edigoes, pois o Beast sobrescrevera os arquivos. Um bom fluxo de trabalho e colocar a sujeira ou imundi'cie em uma camada separada no Photoshop, de modo que, se voce precisar transformar a cena em quadros-chave com a operagao de bake, podera reaplicar facilmente sua camada de sujeira. O mesmo vale para qualquer corregao da cor. £ uma boa ideia usar Adjustment Layers no Pho­ toshop com mudangas de niveis ou exposigao (Levels ou Exposure), de modo que possa reaplicar facilmente esses efeitos.

Mapas de degrade colorido

FIGURA 8.26 A cena do mapa de luz esta dara demais por causa da alta intensidade deluz.

204

Os mapas de luz criados estao no formato EXR, que e um formato HDR. Isso e otimo porque, como esses arquivos contem valores HDR de ponto flutuan­ te, voce pode coloca-los no Photoshop e ajustar interativamente os valores da iluminagao e cor para criar aparencias diferentes sem novamente trans­ formar a cena em quadros-chave com a operagao de bake. Isso funciona porque o Beast transforma a iluminagao em quadros-chave com a operagao de bake em um fluxo HDR de ponto flutuante com um total de 32 bits, como mencionado anteriormente no capitulo. Com o Beast, voce pode levar os va­ lores de iluminagao acima do branco, ou seja, um valor 1.0, que e referido como "superbranco". Isso significa que, ao editar o arquivo em um programa que suporta HDR, voce pode ter acesso a todas as informagoes de ilumina­ gao ao ajustar a exposigao e a cor. Por exemplo, para ter acesso aos valores superbrancos no Photoshop, aumentei a in­ tensidade da luz direcional para 2.0. Isso acaba clareando (superexpondo) minha cena, como mostrado na Figura 8.26. Em seguida, abri o mapa de luz Far no Pho­ toshop clicando duas vezes no arquivo, pois te­ nho a opgao Image Application configurada com Photoshop nas preferencias do Unity iOS e ajustei a exposigao, bem como aumentei o tom de azul nas areas de sombra.

Criando arte de jogos 3D para iPhone com Unity

Para avaliar devidamente o degrade colorido, voce precisa ajustar Proof Setup no Photoshop. Ja mencionei que o Beast renderiza no espago linear com ponto flutuante, o que significa que os arquivos estao em um gama 1.0. Os arquivos armazenados no espago linear ficarao escuros no monitor, mas nesse caso realmente queremos visualizar o arquivo em seu gama linear pa­ drao 1.0 para configurar precisamente a exposigao. Para fazer isso no Photoshop, acesse View e certifique-se de que a opgao Proof Colors esta ativada. Em seguida, acesse View > Proof Setup e escolha Monitor RGB, como mostrado na Figura 8.27. Isso vai configurar a exibigao para mostrar a imagem em seu gama padrao, fazendo com que quaisquer corregoes de cor ou alteragoes da exposigao feitas no Photoshop correspondam a forma como ficarao no Unity iOS. Sdttl

film

A-.uirm

ao E 'i’T.'J Window Proof Setup Proof Color)

►i XV

x+ xxo XI

Screen Mode ✓ Extras Show ✓ Rulers ✓ Snap Snap To Lock Cuidcs Clear Guides New Guide..

O Photoshop pode trabalhar com arquivos HDR de 32 bits, mas a maioria das ferramentas nao esta disponivel nesse modo. Algumas ferramentas boas nesse modo sao Levels, Exposure e HDR Toning, encontradas no menu Image > Adjustments.

help

► Pixel Aspect Ratio Pixel Aspect Rat-o Correctlon 32-bit Preview Options. Zoom In Zoom Out Fit on Screen Actual Pixels Print Sire

Photoshop e HDR de 32 bits

» ~XH |

Custom... Working CMYK Working Cyan Plate Working Magenu Plate Working yellow Plate Working Black Plate Working CMY Plate* Legacy Macintosh RGB (Comma 1.8) Internet Standard RCB (sRCB)

Color Blindness - Protanopia-type Color Blindness - Deuteranopia-type

XR OX ► tX ;

Lock Sikes Clear Slices

FIGURA 8.27 Precisamos mudar a opgao Proof Setup para Monitor RGB para visualizar a imagem em seu gama linear padrao.

Como o arquivo EXR contem valores HDR aos quais tenho acesso, o inter­ valo de iluminagao inteiro pode reduzir as areas superexpostas do mapa. Isso me da muita flexibilidade ao editar o mapa de luz, pois nao estou restrito a um intervalo limitado de valores de iluminagao, como encontrado nas tipicas ima­ gens com 8 bits ou com baixo intervalo dinamico. Na Figura 8.28, voce pode ver que usei as ferramentas HDR Toning para afetar a aparencia geral do mapa de luz, o que produz um estilo mais agradavel para o jogo. Mais uma vez, ter valores HDR no mapa permite fazer alteragoes de exposigao sem precisar no­ vamente transformar o mapa de luz em quadros-chave com a operagao de bake, e tambem permite ajustar a iluminagao para criar aparencias diferentes. Por exemplo, observando a Figura 8.28, voce pode ver que consegui introduzir um pouco de efeito de brilho ajustando o mapa de luz. Salvar o EXR no Photoshop acaba atualizando o arquivo automaticamente no Unity iOS. Esse e um otimo fluxo de trabalho para experimentar diferentes 205

Criando arte de jogos 3D para iPhone com Unity

FIGURA 8.28 A exposigao foi ajustada

no Photoshop usando as ferramentas HDR Toning.

FIGURA 8.29 Aqui voce pode ver a diferenga que o degrade colorido em seus mapas pode ter no estilo e a aparencia de seus niveis.

visuais para a cena e, no mundo dos efeitos visuais, e conhecido como de­ grade colorido. Na Figura 8.29, voce pode ver que ajustando a exposigao e os valores da cor, criei um visual diferente para o jogo, como voce pode ver na comparagao da cena transformada em quadros-chave com a operagao de bake por padrao com a cena com degrade colorido.

Adicionando sujeira aos mapas O m'vel fica otimo com a aplicagao de mapas de luz; no entanto, para um terre­ no baldio, a cena parece limpa. Precisamos adicionar sujeira e poeira na cena. Isso e bem simples de fazer no Photoshop. Primeiro, criei um pincel de su­ jeira predefinido, como mostrado na Figura 8.30. Em seguida, criei uma nova camada e escolhi meu pincel predefinido, mudei algumas configuragoes no editor de pinceis para que pudesse estampar a sujeira clicando com o botao esquerdo. Entao, comecei a estampar a sujeira aleatoriamente em toda a cena, como mostra a Figura 8.31. £ importante ficar atento as costuras porque, devido a natureza das UVs do mapa de luz, ha muitas costuras, e pintar com descuido podera realmente revelar essas costuras, como mostrado na Figura 8.32. 206

Criando arte de jogos 3D para iPhone com Unity

FIGURA 8.31 A sujeira foi estampada por toda a cena e colocada em sua propria camada.

207

Criando arte de jogos 3D para iPhone com Unity

FIGURA 8.32 Pintando diretamente as costuras, voce pode ver que elas se tornam visiveis no mapa de luz.

Assim que a camada basica de sujeira foi feita, voltei e acrescentei uma camada secundaria para esconder mais o efeito lado a lado da sujeira. Nessa segunda camada de sujeira, fiquei completamente longe das costuras e usei uma combinagao de versao menor do pincel de sujeira e a ferramenta borracha para criar o acumulo de sujeira nas bordas das paredes e nas areas em que os barris estavam empilhados. Na Figura 8.33, voce pode ver a camada de sujeira secundaria. FIGURA 8.33 A carnada de sujeira secundaria foi usada para criar acumulo nos cantos e na base dos muros.

No Photoshop, voce pode ajustar a intensidade da sujeira ajustando a opacidade da camada. Mais uma vez, salvar o arquivo atualiza o mapa de luz automaticamente no Unity iOS. 208

Criando arte de jogos 3D para iPhone com Unity

Na Figura 8.34, voce pode ver uma comparagao entre o mapa de luz pa­ drao e o mapa de luz com a sujeira aplicada. Repare que a cena fica muito me­ lhor e mais rica, pois a camada de sujeira fornece um nivel de aleatoriedade e detalhe ao ni'vel, bem como combina o estilo do design de m'vel com o de um terreno baldio. FIGURA 8.34 Observe que a camada de sujeira fornece uma camada de aleatoriedade e detalhe, melhorando assim a aparencia e o estilo do nivel.

Resum o Neste capftulo, discutimos o uso de mapas de luz nao so para otimizar a cena, mas tambem para introduzir maior nivel de estilo e realismo. A adogao do Beast rapidamente se tornou um dos meus recursos favoritos no Unity iOS. Sua qualidade e fluxo de trabalho produtivo sao incomparaveis e, no espirito de ser "Unity", sua plena integragao torna a criagao de mapas de luz facil e coloca o poder criativo de volta as maos do artista.

209

CAPI'TULO 9

Trabalhando com os recursos do jogo no Unity iOS Neste livro, discutimos a criagao de objetos para um jogo iPhone ou iPad do Unity iOS usando o modo e o Blender. Neste capitulo, eu gostaria de falar so­ bre o componente Unity iOS no que se refere aos recursos [assets) artisticos criados nos capftulos anteriores. 0 objetivo deste capitulo nao e criar um jogo inteiro do comego ao fim. Todos os capitulos anteriores prestaram muita atengao a forma como nossos recursos foram construidos com a ideia de usar o Unity iOS para implementci-los nos iDevices da Apple. Agora veremos o uso do Unity iOS em relagao a forma como podemos comegar a integrar esses recursos nos componentes reais do jogo, bem como otimiza-los ainda mais para o iPhone e o iPad. Discutiremos topicos como o uso de Prefabs, compressao de textura, bem como shaders otimizados pelo iPhone e pelo iPad. Alem disso, iremos rever o uso da fisica em seu jogo mostrando o uso do NVIDIA PhysX Engine do Unity como alternativa ao metodo de animagao com baking analisado no Capitulo 7. Finalmente, veremos como publicar o seu jogo e as Player Settings do iPhone, bem como otimizar seu jogo com o Internal Profiler. Comecemos com as Prefabs e, como sempre, nao deixe de baixar a muni­ gao do Tater (Tater's Weapon Load Out) para estocar recursos extras.

Creating 3D Game Art for the iPhone with Unity. DOI: 10.1016/B978-0-240-81563-3.00009-7 Copyright 9 2011 Elsevier, Inc. Todos os direitos reservados.

211

O carregamento da arma do Tater Va para o site de recursos para ver o video completo deste capitulo.

Prefabs Os Prefabs permitem que voce crie objetos de jogo reutilizaveis e sao extremamente uteis ao construir objetos complexos em sua cena. Por exemplo, com os objetos do ambiente, como os barris e as tabuas, criei um Prefab para esses itens, como mostrado na Figura 9.1.

FIGURA 9.1 Os acessorios do ambiente foram criados em um Prefab para reutilizagao por todo o nivel.

C ria n d o um Prefab para o s a ce sso rio s d o a m b ie n te Como esses objetos seriam duplicados e reutilizados em todo o nivel, faz mui­ to sentido criar um Prefab deles. Na segao Prefab, organizei os acessorios em uma configuragao predeterminada. Essa configuragao me permitiu poupar tempo ao duplicar os objetos e organiza-los na cena, pois eu so precisava fa­ zer uma pequena rotagao e translagao nos acessorios para que ficassem aleatorios em sua colocagao no nivel. Tambem acrescentei colisores aos objetos, como mostrado na Figura 9.2.

Prefab d o alvo Tambem criei um Prefab para o objeto-alvo, pois ele sera reutilizado em todo o nivel. Na Figura 9.3, voce pode ver esse Prefab. Falaremos mais sobre o objeto-alvo mais adiante neste capitulo. Esse Prefab e mais complexo no sentido de que contem objetos Rigidbody (corpo rigido), um emissor de particulas,

212

FIGURA 9.2 Cada objeto contem um colisor de caixa para que o pcrsonagem nao o atravesse no nivel.

f ig u r a

9.3 0 objeto-alvo tambem

foi criado em um Prefab, de modo que a animagao complexa pudesse ser facilmente distribuida por todo o nivel.

e scripts para conduzir as particulas e a simulagao fisica. Como o objeto-alvo tem configuragao complexa, criar um Prefab permite fazer essa configuragao uma vez e, depois, o Prefab pode ser organizado em todo o nivel com suas funcionalidades ja calculadas.

Kit d e c o n tro le d a ca m e ra Os controles do jogador em terceira pessoa, como mostrado na Figura 9.4, sao um Prefab (Prefab) modificado que esta disponivel on-line em UnityPrefabs. com. A UnityPrefabs e um excelente recurso para a compra de objetos de jo­ gos de alta qualidade, como os kits de controle da camera, efeitos de particulas e inteligencia artificial. Configurar os controles da camera e um processo complexo e, para aqueles como eu que sao mais inclinados a arte, ser capaz de comprar um kit pronto, como mostrado na Figura 9.5, com toda a funcionalidade necessaria para o meu jogo, e uma otima economia de tempo. Por exemplo, o Third-Person Camera Kit da UnityPrefabs.com, fornecido para o livro por Efraim Meulenberg, rapidamente forneceu um sistema de controle pronto que arrastei para meu projeto. As predefinigoes podem ser modificadas facilmente com seus proprios graficos para atender ao estilo de seu jogo. Os kits de controle da camera (Camera Control Kits) funcionam muito bem e contem recursos avangados, como o fato de a camera nunca atravessar as paredes e o correto movimen­ to do personagem enquanto metralha, fazendo um vaivem para a esquerda e para a direita. Provavelmente, o maior desafio no desenvolvimento de jo­ gos nao esta na criagao do conteudo ou programagao, mas em completar o jogo e coloca-lo no mercado. Qualquer dor de cabega que voce puder evi­ tar ajudara a superar esse desafio, e a UnityPrefabs.com existe para dar uma maozinha. Provavelmente, o maior desafio no desenvolvimento de jogos nao esta na criagao do conteudo ou programagao, mas em completar o jogo e coloca-lo no mercado.

FIGURA 9.4 Esta imagem mostra uma versao modificada doThird-Person Camera Control da UnityPrefabs.com.

FIGURA 9.5 Esta imagem mostra o Prefab padrao do controlador em terceira pessoa para o iPhone disponivel na UnityPrefabs.com.

C o n figu ran do colisores Para que o personagem possa interagir com o ambiente, ser capaz de se mover pelo terreno e parar ao se deparar com objetos, voce precisara usar colisores. Os colisores podem ser muito caros nos iDevices e devem ser usados com cuidado. Existem cinco tipos de colisores que voce pode usar, e alguns sao mais caros do que outros. Na Figura 9.6, voce pode ver um diagrama que mos­ tra cada tipo de colisor (Collider) a medida que aumentam de prego, do barato ao caro em termos de impacto no desempenho. Voce pode realmente optar por deixar o iOS Unity criar automaticamente os colisores na importagao marcando a opgao Generate Colliders na caixa de dialogo Import Settings, como mostrado na Figura 9.7. A opgao Generate Colliders adicionara um Mesh Collider ao objeto. O Mesh Collider constroi um colisor com base na malha na qual sera aplicado. Ele pode ser muito preciso para colisoes, mas tambem muito caro, dependendo da malha. Na Figura 9.8, voce pode ver que um Mesh Collider e adicionado as segoes de nivel. 215

Criando arte de jogos 3D para iPhone com Unity

Sphere Collider Box Collider

fi

IFBXImpoftrr

Meshes

I Generate C o l l i d e r * 7

Capsule Collider

Cenetate llghtm ap UVs 7

►Advanced

N or m a i l & T « n y « n H

Mesh Collider 7

Wheel Collider Materials

FIGURA 9.6 Estediagrama lista os diferentescolisores, naordemdo menos paraomais caro.

o lr.l{

r. v

* >

Transform Mesh (Mesh Filter) Mesh Renderrt

P Mesh Collider Aaictial

*

Level.Beast Shader

ri

tx*ni»« ***»

on

FIGURA 9.8 AopgaoGenerateColliders adicionar^umcolisor de malha aoobjeto.

216

FIGURA 9.7 Voce podeoptar por ter colisores adicionados

automaticamenteassuasmalhas na importaqao.

No meu caso, o Mesh Collider funcionara bem, pois as segoes de nivel sao muito basicas, com contagem de poligonos mais baixa. Mas, em um modelo de nivel mais complexo, com contagem de poligonos mais alta, voce desejara usar um colisor mais otimizado, como o Box Collider. A fisica executa na CPU, de forma que ha necessidade de se usar o Internal Profiler, como discutiremos mais adiante, para encontrar os possiveis gargalos e ver se o jogo esta integra­ do a CPU, o que significa ser caro em termos de consumo de CPU. Mas voce nao pode adicionar um Box Collider a segao, pois nao ira compensar para o chao e a cerca de madeira, mas basta tornar a segao inteira um colisor, como mostrado na Figura 9.9. >/ Em vez disso, no programa 3D, podera criar um objeto colisao que se encaixa na area que o nivel ocupa, mas muito inferior em resolugao, em que * o. f? 0. voce pode aplicar com seguranga o Mesh Collider. m 0. Novamente, isso nao foi necessario no meu caso; •n o. portanto, veremos um dos recursos do tutorial Pe­ None (PhyiK nelope dispomvel na segao Resources no Unity3D. com. Na Figura 9.10, voce pode ver que a malha do •fj Meih nivel para o jogo Penelope e mais complexa, e usar apenas um Mesh Collider nessa geometria poderia causar um impacto desnecessario no desempenho. H Em vez disso, um objeto colisao com resolugao infe­ rior foi criado para otimizar o desempenho do Mesh 1 Collider.

Criando arte de jogos 3D para iPhone com Unity

FIGURA 9.9 0 BoxCollider estacobrindoa malha inteiracomo umacaixadelimitadora enaofuncionara como colisoreficaz.

FIGURA 9.10 Amalha destacada acimadonivel real eoobjetocolisor. Notequeemuitomaissimplesdoque amalha de nivel real.

217

Criando arte de jogos 3D para iPhone com Unity

C om p ressao da textura No Capitulo 3, analisamos o tamanho e o formato da textura. Pode-se real­ mente comprimir as texturas e alterar seu tamanho no Unity IOS. Na Figura 9.11, voce pode ver, marcando a opgao Override for iPhone, que pode ter acesso para configurar o tamanho maximo, bem como o formato da textura. O tamanho que for escolhido para as texturas depende do seu jogo, assim como do dispositivo em que o jogo esta rodando. Por exemplo, voce precisara usar texturas de resolugao mais alta, como 1.024 x 1.024, para o iPad e o iPhone 4. Mas isso e exagero no 3GS, pois sua resolugao de tela nao e alta o suficien­ te para realmente mostrar essas texturas de resolugao mais alta e, assim, seria um desperdicio de recursos do sistema. No Capitulo 3 tambem analisamos a importancia de criar texturas que sejam uma potencia de 2 (POT). As texturas que nao forem potencia de 2 (NPOT) nao cabem na memoria do iPhone. £ im­ portante notar que a regra geral e criar texturas POT quadradas, ou seja, 1.024 x 1.024 ou 512 x 512, uma vez que as texturas POT nao quadradas podem acabar nao sendo comprimidas, ou seja, 1.024 x 512 ou 256 x 128. Voce deve monitorar seus tamanhos de textura no inspetor e verificar se esta usando a compressao PVRTC4 ou PVRTC2. Mas ha sempre excegoes a re­ gra; digamos, por exemplo, que se voce quisesse criar alguns icones de alta qualidade para a IU do seu jogo poderia usar a compressao RGB16.

Mapas Mip Os mapas Mip, que podem ser configurados na segao Texture Importer mar­ cando a opgao Generate Mip Maps, como mostrado na Figura 9.12, sao uma serie de versoes progressivamente menores da imagem usada para otimizar o desempenho. Default

©

*

0



yf Override for iPhone

Max Size

11024

Texture Format

RC8 Comprctitd FVSTC « bit* Revert

Preview

FIGURA 9.11 Voce podeconfigurar otamanho datextura, bemcomoseu formato, nacaixade dialogoTexture Importer.

218

R

1024x1024 RCB£om prcsscd PVRTG 4 bits

0.5 MB

Apply

Criando arte de jogos 3D para iPhone com Unity

© Inspector

Lightmap Editor

tater_diffuse Ot»fn ' Aniso Level

^

Filter Mode

WHS

Wrap Mode

Repeat

1

t

■ (Texture Importer) Texture Type Advanced Generate Cubemap Read/Write Enabled Alpha from Grayscale ^ Generate Mip Maps

Correct Gamma Border Mip Maps Mip Map Filtering Fadeout Mip Maps

Generate Normal Map

Normal Map

FIG U R A 9.12 Voce pode ativar

Lightmap

os mapas Mip de uma textura na caixa de dialogo Texture Importer.

Elas podem ser extremamente vitais para o iPhone e o iPad. 0 uso de ma­ pas Mip consome mais memoria, mas nao usa-los pode causar uma perda maior de desempenho. Os mapas Mip podem fazer com que as texturas de sua cena pare^am desfocadas. Para compensar isso, normalmente configuro a op^ao Mip Map Filtering como Kaiser, que em minha opiniao tende a diminuir esse desfoque, como mostrado na Figura 9.13.

FIG U R A 9.13 Aqui voce pode ver a

diferen^a entre a filtragem do mapa Mip Kaiser e Box. A filtragem da caixa e muito mais desfocada do que a do Kaiser.

219

Criando arte de jogos 3D para iPhone com Unity

Os mapas Mip sao projetados para as texturas otimizadas que podem parecer muito pequenas na tela, pois elas sao levadas para longe no espago 3D. Como discutido no Capitulo 4, na segao "Construindo na grade", podemos criar esse efeito manualmente assegurando que as malhas estejam usando apenas uma segao espedfica e proporcional do atlas de texturas ao tamanho da ma­ lha, o que se refere diretamente a uma relagao de um para um entre o tama­ nho das malhas em unidades e o tamanho da textura em pixels. Isso significa que as texturas nunca serao pequenas demais na cena e, portanto, nao preci­ saremos nos preocupar em usar mapas Mip. Tragar o perfil do jogo garantira que ele seja otimizado corretamente.

Shaders otim izados E muito importante certificar-se de que voce esta usando shaders otimizados para os dispositivos iPhone e iPad. O Unity iOS vem com varios shaders uteis compativeis com o iPhone, como mostrado na Figura 9.14. Sugiro que voce use esses shaders o maximo que puder. Usar o sha­ der errado pode fazer o desempenho do jogo cair drasticamente. Ha duas O Inspector

Lightm ap Ec

Level Beast Bumped Diffuse Bumped Specular Decal Diffuse Diffuse Detail / Diffuse Fast Parallax Diffuse Parallax Specular Specular Tree Editor Bark Shader Tree Editor Leaf Shader VertexLit FX

Main Color Base (RGBi

CUI Nature Particles Projector Reflective RenderFX Self-lllumin Transparent

Preview

FIGURA 9.14 Aqui voce pode ver os

shaders especificos do iPhone.

220

Background Diffuse Detail Lightmap Panicles Self-lllumin Transparent Vertex Colored

► ► ► ►

► ► ► ► ►

► ► ►

iPhone

► ►

Legacy Shaders



Criando arte de jogos 3D para iPhone com Unity

categorias em termos de otimizagao de shader, que sao o Pixel-Lit e o Vertex-Lit. Os shaders Pixel-Lit sao muito mais caros do que os Vertex-Lit. Os shaders Pixel-Lit fazem com que os obje­ tos sejam desenhados varias vezes, dependendo do numero de Pixel Lights brilhando sobre o objeto, uma vez que eles calculam a iluminagao em cada pixel. Isso nao so aumenta a carga na CPU para processar e enviar comandos para a GPU, mas tambem a GPU tera de processar os vertices e desenhar os pixels na tela. Os shaders Vertex-Lit calculam a luz com base nos vertices da malha usando todas as luzes ao mesmo tempo, o que significa que a malha so precisara ser desenhada uma vez. E importante que voce nao use nenhum shader Pixel-Lit em suas cenas para iPhone e iPad. Para ficar seguro, atenha-se aos shaders do iPhone fornecidos pelo Unity iOS, a menos que tenha um motivo espe­ cifico para usar um shader diferente ou personalizado. Por exemplo, ao configurar o Beast para o meu mate­ rial de nivel, eu o configurei acidentalmente para usar o shader Diffuse, que e um shader Pixel-Lit. Ao tragar o perfil do meu jogo, percebi que, de repente, minha velocidade de projegao caira para 6 FPS. Depois de fa­ zer uma pequena pesquisa, percebi o meu erro. Entao, mudei o material de nivel para usar o shader Diffuse Fast, que e um shader Vertex-Lit, como mostrado na Figura 9.15. Os shaders podem ter um impacto significativo no jogo. E importante ter certeza de que voce esta usando rigorosamente os shaders Vertex-Lit e que os shaders nao estao realizando nenhuma operagao com multiplas passagens, pois isso fara com que o objeto seja desenhado mais de uma vez e tambem tera um impacto no desempenho do iPhone e do iPad.

f ig u r a 9.15 Para o material de nivel, usei o shader Diffuse Fast porque e um shaderVertex-Lit.

U san d o a fi'sica no U nity iOS No Capitulo 7, analisamos um metodo para o baking de uma simulagao dina­ mica no Blender. Como mencionei, esse metodo pode ser mais caro na GPU. Normalmente, com os iDevices mais recentes, como 3GS, iPhone 4 e iPad, a CPU e bastante rapida e o gargalo para o desempenho pode ir para a GPU com os dispositivos de resolugao mais alta, como o iPhone 4 e o iPad, como vimos no Capitulo 1. Se o seu jogo ja estiver pesado na renderizagao, o que significa que ja esta usando muitos recursos da GPU, podera fazer mais senti­ do, em termos de desempenho, utilizar o NVIDIA PhysX Engine do Unity. Isso mudara a carga de trabalho para a CPU mais capaz, em vez da GPU, e pode ser 221

Criando arte de jogos 3D para iPhone com Unity

uma alternativa ao metodo de anima^ao com baking analisado no Capitulo 7. Alem disso, como voce vera, esse metodo e muito menos complicado e mais rapido de configurar no Unity iOS. Se optar por usar a anima^ao com baking versus a simula^ao fisica, tudo vai depender do conteudo e do tipo de jogo que voce esta criando. £ por isso que e bom ter op^oes diferentes de como certos aspectos, como a fisica, afetarao as potenciais areas de gargalo no seu jogo. A melhor maneira de avaliar o desempenho do seu jogo e usando o In­ ternal Profiler, como analisaremos mais adiante. A melhor maneira de avaliar o desempenho do seu jo go e usando o Internal Profiler.

F IG U R A 9 .1 6 Esta im agem mostra

um aum ento na media de valores de tem po do quadro em cada dispositivo em que a fisica foi usada, assim como a variavel de utiliza^ao Physx.

No caso do aplicativo demo do livro, tra^ando o perfil do meu jogo descobri com o Internal Profiler no Xcode que usar a anima^ao com baking foi o melhor caminho a tomar, em termos de desempenho, para manter minha ve­ locidade de proje avg: 39 .2 «• d raw - ca ll #> a ia : 39 sax: 45 | batched: 197 a i n : 26314 aax: 54495 avg. 29994 | batched. 19B93 t r i s #> • in : 11712 tax: 1143(4 avg: 49512 v e r t s #» | betehad: 9694 p la y e r - d e te ll: physx. 1.9 in ia a t ie n : 9.3 c u l li n g 9.9 tk in n ia g j 1.9 b atch in g : 9.2 rend er: 9.9 fixad-ep d ate-co eat: 1 . . »o no -4 cnp t4 * * « fixedUpdate: 9.1 c o ro u tin e !: 9.9 ry» used haapi 245769 a llo c a t e d heap: 356352 aax naaber of c o lle c t io n s : 9 c o lle c t io n t o t a l d u ra tio n ! 9.9

iPad

19

iPhone U n ity i a t e r n a l p r o f i l e r s t a t s : cpu-player> a i a : 13.4 aax: 259.3 avg: 25.2 cp u- o glei-d rv» a i a : 1.2 aax: 3.9 avg: 1.9 cpu-prasent» a in : 9 .S aax: 1.4 i • •• fr e a e t ie e * a i a : 31.2 aax: 256.3 avg: 41.1 d raw - ca ll #* a ia : 39 aax: 42 avot 39 | batched: 139 a in : 2 99 7 1 aax: 239 4 7 avg: 22132 | batched: 13165 t r i s v e r t s l> a ia : 9 /1 1 laxt 9 2 7 3 6 avg: 4g451 I batched: 7499 p la y a r - d e t a il physx: 2.4 in ia a t ie n : 9.3 c a ll i n g 9.9 s k in a ia g : 9.9 b atch in g : 9.1 rend er: 12.6 fixad-apdate~count: 1 . . 13 ao n o - scrip ts» uadate: 9 4 fixedUpdate: 9.2 c o ro u tin e s : 9.9 aono-aeaory> usod heap: 266249 a llo c a t e d haap: 266249 aax naaber of c o lle c t io n s : 9 c o lle c t io n t o t a l d u ra tio n : 9.9

iPhone 3 G S / Touch 3rd Gen iPhone U n ity in t e r n a l p r o f i l e r s t a t s : cpu-player> a i a : 14.9 aax: 399.9 avg: 29.7 cpti-oglas-drv> a i a : 2.9 aax: 9.4 avg: 3 .S a i a : 9.9 aax: 2.9 cpu-prasent> fre a c tia e > • ia : 33.2 aax: 322.4 avg: 43.9 d raw - ca ll #» a i a : 52 aax: 52 —: *** | batched: 143 t r i s #» a i a : 26991 aax: 29935 evg: 27454 | botched: 15256 v e r t s #> a ia : 291313 aax: 239473 avg: 293257 | batched: 9635 p lo y e r - d e te il: physx: 2.6 c n ia a t ie n : 9.4 c a ll i n g 9.9 sk in n in g : 1.3 b atch in g : 9.2 rend er: 13.9 fix a d - ap d ate -co an t. 1 . . aono-»cript»> nnd*t# 19 * fixedUpdete; 9.2 c o ro u tin e s : 9.9 used hoop: 259949 e llo c e t e d haep. 299249 aax aaaber o f c o lle c t io n s : 9 c o lle c t io n t o t a l d a re tio n t

222

16 9.9

Criando arte de jogos 3D para iPhone com Unity

Descobri que o iPhone 4 forneceu o melhor desempenho geral. Ao usar o Internal Profiler para medir o desempenho entre a animagao com baking, como discutido no Capitulo 7, e usar a fisica no Unity iOS, o iPhone 4 e o iPad nao tiveram exito na velocidade de projegao (33,4 milissegundos ou 30 FPS) ao utilizar o metodo de animagao com baking. 0 3GS teve um pequeno aumento de 33,4 milissegundos (30 FPS) para 33,9 milissegundos (29 FPS). Ao utilizar a simulagao de fisica, o iPhone 4 saltou para 39,2 milissegundos (25 FPS), o iPad para 41,1 milissegundos (24 FPS) e o 3GS para 43,9 milissegundos (22 FPS). No meu caso, essas quedas na velocidade de projegao nao causaram dife­ renga significativa no jogo; no entanto, a velocidade de projegao e algo que voce sempre precisara verificar, e usar o Internal Profiler e a melhor maneira de medir o desempenho. Agora veremos como configurar a explosao do alvo no Unity iOS.

Configurando o objeto-alvo Para demonstrar o metodo da fisica no Unity iOS, usaremos o objeto-alvo do jogo do Capitulo 7. Para criar o efeito de explosao, precisaremos adicionar al­ guns componentes do corpo rigido e colisor ao nosso alvo. Como analisamos no Capitulo 7, o alvo e composto de nove itens de malha que usaremos para explodir. Cada item de malha tem um corpo rigido e um componente Box Collider adicionado, como mostrado na Figura 9.17.

FIGURA 9.17 Cada parte da malha que compoe o objeto-alvo tem um corpo rigido e um componente Box Collider.

223

Criando arte de jogos 3D para iPhone com Unity

C a d a ite m d a m a lh a , r e p r e s e n ta n d o u m p e d a g o q u e e x p lo d ira , te m seu p ro p rio co lisor, e isso p o d e ra se r p a rte d o p ro b le m a q u e faz c o m q u e a v e lo ­ c id a d e d e p ro je g a o ca ia . C o m o a n a lis a m o s a n t e r io rm e n te , o s co liso re s p o d e m se r m u ito ca ro s n o iP h o n e e d e v e m ser u s a d o s c o m c u id a d o . Pa ra c a d a p a rte d o a lvo , e s ta m o s u s a n d o o B o x C o llid e r, q u e e u m d o s c o ­ lisores m e n o s caros. A seguir, a d ic io n a re m o s u m o b jeto - caix a, q u e sera u s a d o para te sta r a c o li­ sao q u a n d o o T ate r a tirar n o a lv o e sera c h a m a d o d e "HitTest". Esse o b je to t a m ­ b e m te ra u m Bo x Collider, e sua re n d e riz a g a o d a m a lh a sera d e s a tiv a d a p ara q u e n a o seja re n d e riz a d o e, p o rta n to , n a o e n v ie u m a c h a m a d a d o d e s e n h o . N a FiguFIGURA 9.18

A renderizagao de

malha esta desativada; portanto, o cubo nao sera renderizado esomado a contagem do desenho.

ra 9.18, v o c e p o d e v e r e sse o b je to c o m sua re n d e riza g a o d e m a lh a d e s a tiv a d a . T a m b e m c o n fig u re i u m a n o v a ta g p a ra e sse o b je to c h a m a d o "T arg e t". Essa ta g sera u s a d a p a ra v e rific a r o o b je to c o lis a o q u e e e n c o n t r a d o p e la e m is s a o

O Inspector Lightmap Editor Tag Manager (Tag Manager) ▼ Tags 6 Size Element 0 Element 1 Water Element 2 Target Element 3 Bake Element 4 Element 5

FIGURA 9.19 0 objeto recebeu uma tag especifica, que pode ser usada para a identificagao do objeto no script.

fl O,

Criando arte de jogos 3D para iPhone com Unity

de raios emitida quando o Tater atira. Na Figura 9.19, voce pode ver o Tag Ma­ nager para adicionar a nova tag. Finalmente, adicionaremos um script para acrescentar uma forga de explo­ sao. Felizmente, como voce vera, essa funcionalidade faz parte da classe Rigidbody do Unity, conforme mostrado na Figura 9.20. Na Figura 9.21, voce pode ver que o script de explosao e adicionado na raiz do objeto-alvo. Na Figura 9.22, voce pode ver que destaquei algumas areas-chave do script. Em primeiro lugar, na fungao Awake, fizemos um loop pelos objetos filhos e configuramos seus componentes Rigidbody (corpo rigido) como o modo Sleep. O modo Sleep e uma otimizagao que permite ao mecanismo da fisica (Physics Engine) parar o processamento desses corpos rigidos. A agao de dormir acontece automaticamente quando um corpo rigido vai descansar. No nosso caso, iremos usa-lo para impedir que os corpo rigidos caiam imediatamente no piso devido a gravidade quando o jogo inicia. Em seguida, temos uma fungao Explode que e chamada quando o tiro de emissao de raios colide com o objeto HitTest, como mencionado anteriormen­ te. A fungao Explode contem a chamada para a fungao Add Explosion Force, que, como discutimos, faz parte da classe Rigidbody e realmente explode os pedagos do alvo. Nesse ponto, o mecanismo da fisica cuida do resto.

Rigidbody.AddExplosionForce turauao A d d E xp to tto n F o re« ( • ■ p ie c io n r o r e * : flo tl. « ip l o « i e n P e r t f ln : V ectors* • ip to *to n#U C r o s s -P la tf o r m S e ttin g s fisica diminuira sua velocidade para deixar a CPU acomCom pany Name com tfte3pM

FIGURA 9.27 A segao Player Settings permite definir configuragoes, como Resolution, SDK Version, assim como os itens Icon e Splash Screen Images.

228

Player Settings

$

Existem varias configuragoes importantes na segao Player Settings. Na Figura 9.27, voce pode ver a se­ gao Player Settings. A segao Player Settings e onde se configuram Bundle Identifier, SDK Version, Target iOS Version, bem como os icones do aplicativo, imagens splash (iniciais) e a orientagao padrao.

Criando arte de jogos 3D para iPhone com Unity

Nas proximas segoes, examinaremos a configuragao do nosso jogo para que ele seja executado tanto no iPad como no iPhone, no que e conhecido como aplicativo universal (Universal Application), definindo as configuragoes Configuration e Optimization.

Universal Builds Se estiver implementando apenas para o iPad ou construindo um aplicativo Universal, voce precisara suportar pelo menos duas das quatro possiveis orien­ tagoes no iPad. Por exemplo, o aplicativo demo do livro suporta a Paisagem a Esquerda e a Paisagem a Direita no iPad e apenas a Paisagem a Esquerda no iPhone. Na segao Configuration em Player Settings, precisaremos configurar o item Target Device para o iPhone + iPad. Tambem configuraremos Target Re­ solution como Native, para que a resolugao seja definida para a reprodugao mais alta que o dispositivo puder suportar. Na segao Optimization, configuraremos SDK Version como iPhone OS 4.0 e Target iOS Version como iPhone OS 3.3.1. A definigao Target iOS permitira construir para o iPad e os dispositivos que nao executam o iOS 4. Voce pode ver essas configuragoes na Figura 9.28. FIGURA 9.28 0 Target iOS e o sistema

Optimization Apl Compatibility Level N/*r Source Code File. Voce precisara adicionar uma nova chave, UlSupportedlnterfaceOrientations e digitar as orientagoes suportadas em seu jogo. Na Figura 9.29, pode ver que adicionei suporte para as orientagoes LandscapeLefte LandscapeRight. Por fim, e preciso escrever o codigo que vai suportar e girar a tela para aderir as orientagoes que seu jogo suporta. Na Figura 9.30, voce pode ver um script simples para suportar as resolugoes diferentes. 0 script so vai girar a tela se o dispositivo que executa o jogo for o iPad; caso contrario, nenhu­ ma rotagao da tela ocorrera. 0 teclado do iPhone esta definido para nao girar 229

Criando arte de jo g o s 3D para iPhone com Unity

I J

II

*orti

4

I P I

« ? « » l v a r ( i o n * " l . t * • n c o d l'^ 'l/ T *-•* »> «'00

«key»CPBundlet«c «*t r»ng>Xc«n.pn9'/* tri» * 9*

JO li

< k*y»< Fiw nd l*Id*n t i f larc/k ejr*

u

-»t t i"g»< 0* . theSdninja. $CfB«n«liN**e'/»C)r»

u t(

u if 1J If N i» u M

«* t r ;

»S

lS R * 4 iiir (lIP h O A e 0 S '/ iir >

« trw / » «ke»» Ico A .p A 9

*7 nI

« i t rin « » X c o o - iP a a . p n f ' * * n »*f * • / a rra y *

«i M > 1

•key »UIInt«rf*< eO rl*M »tlP(v«/k*jr»

-TTT7^y>xim nfy rK w m wTTTTgw: » gi5. «tr,ng*( m g-U!XnterfaceOri*«t*tiOftlandscapaBight- ’»tr tr>g» rra y * f . l lI P r » xeooe ♦ tn n / » « k e y » U X ft c g v ir e t P c r tu t e n t V lP l« / k « y »

»»

4C 41

• * e ,- U lS ta tu iB a rM id S e n - / * e y »

4J

«trvn/»

41

'• f » ■ U lS ta tu tB a r£ ty l* - / * ry » « * t r tng>U!S*.at u * B * rS ty le D e fa u lt « / » t r in g * « / p lt » t »

FIGURA 9.29 V o ce p o d e co n fig u ra r a tela sp la sh para in ic ia r n a o ricn ta g a o co rrcta n o a rq u iv o info.plist.

s u /*u p j»

i

Q a ia : 31.9 aax 35.3 avg; 33.S a ia ; 41 aax 41 avg: 41 | bat chad; 243 draw-call »> 32944 avg; 32799 | batched 23411 t r i s #» a ia : 32999 a ia : 31297 39297 avg; 392(7 I bat chad 13497 *art» #» p la y n r -d a ta il* p h y ti: 9.1 aaia a tio n : 9.2 c a llin g 9.9 skinning: 1.9 batching: 9.3 randan 19.S fixed-update-coant: 1 a o n o -tc r ip tt* update; 9.4 fixadUpdate; 9.1 coroatine*: 9.9 uted heap: 192512 allo cated haap: 196691 aax nwaber of c a lle c tio n t: 9 co lle ctio n to ta l doratien: 9.9

FIGURA 9.32 0 Internal Profiler mostra estati'sticas vitais sobre o desempenho do seu jogo.

232

anteriormente. 0 valor "animation" indica quanto tempo e gasto animando os ossos, e "skinning" (revestimento de pele) mostra a aplicagao de animagoes nas malhas com pele. Se voce vir esses valores aumentando, podera otimizar a qualidade em Skinned Mesh Renderer Component, como analisamos no Ca­ pitulo 5, na segao "Caminhos de revestimento otimizados". O valor "batching" mostra o tempo que e gasto renderizando a geometria em batch, e e impor­ tante notar que o Dynamic Batching e mais caro do que o Static Batching. 0 valor "mono-scripts" informa quanto tempo e gasto na execugao de suas fungoes Update e FixedUpdate, bem como as corrotinas. Finalmente, as infor­ magoes "mono-memory" permitem saber quanta memoria o Mono Garbage Collector usa. Voce pode observar esses valores para ter uma ideia de como sua memoria esta sendo alocada e quantas vezes o Garbage Collector e exe­ cutado. Se o coletor de lixo for executado no meio do jogo, muito provavel­ mente voce vera uma pausa ou queda na velocidade de projegao. Nesta segao, eu me referi aos valores no Internal Profiler como altos demais. Voce deve estar se perguntando: "Quanto e alto demais?" Nao ha uma resposta absoluta a essa pergunta, uma vez que depende totalmente de seu jogo. Vejo o "tempo do quadro" e quando ele cai, e uso as outras informagoes no perfil para ter pistas sobre o que esta causando a queda. Nao e uma questao de saber os valores certos, mas saber que informagoes sao necessarias para que voce possa usa-las para aprender a melhorar o desempenho do jogo. Nao posso enfatizar o quanto e importante tragar o perfil do jogo em todas as fases de desenvolvimento, e o Internal Profiler e uma otima ferramenta para essa tarefa.

Resum o Neste capitulo, discutimos como trabalhar com os recursos do jogo no Unity iOS em termos de criar predefinigoes, usar shaders otimizados, trabalhar com objetos de colisao e o Physics Engine do Unity. Tambem vimos a criagao de Universal Applications, bem como a edigao do projeto Xcode para otimizar ainda mais o nosso jogo. O Unity IOS fornece uma experiencia unica para a criagao de jogos nos iDevices da Apple e, como artista 3D, posso dizer que ele coloca o mundo complexo do desenvolvimento de jogos em um nivel que posso entender e com o qual trabalhar com facilidade. Este pode ser o fim do ultimo capitulo, mas ainda ha muito a aprender. Nao deixe de visitar o link "Tater's Weapon Load Out" (Munigao do Tater) no site de recursos do livro para ver um video que explica detalhadamente os topicos abordados neste capftulo, como o uso do Internal Profiler, e no livro inteiro. Vejo voce la!

Recursos de bonus

Este livro tem um site (em ingles) onde voce pode encontrar recursos uteis, como videos explicativos que ilustrarao ainda mais os temas abordados. Esses videos ampliarao mais os topicos analisados em cada capitulo e fornecerao uma perspectiva diferente daquela abrangida na pagina impressa. Voce pode obter os recursos do livro visitando http://wesmcdermott.com e clicando no link "Creating 3D Game Art for the iPhone Book Site". No site ofi­ cial do livro, clique no link "Tater's Weapon Load out". As informagoes de login estao listadas a seguir. Nome de usuario: tater Senha: thumpNoggins Alem disso, nao deixe de verificar o aplicativo iPhone/iPad do livro, "Tater!". O aplicativo serve como uma demonstragao criativa, executando o conteudo analisado em todo o livro nos iDevices reais. Com o "Tater", voce pode percorrer os alvos de tiro no terreno de treinamento do Tater, que oferece a pratica na arte de explodir cabegas! 0 aplicativo mostra todos os recursos do jogo e animagoes discutidos no livro. Voce pode encontrar mais informagoes sobre como obter o aplicativo "Tater" no site oficial do livro. Creating 3D Game Art for the iPhone with Unity. DOI: 10.1016/B978-0-240-81563-3.00022-X Copyright 9 2011 Elsevier, Inc. Todos os direitos reservados.

235

Criando arte de jogos 3D para iPhone com Unity

Em wesmcdermott.com, clique no link'Creating 3D Game Art for the iPhone Book Site” para entrar no site oficial do livro.

236

Criando o terreno baldio de treinamento do Tater Nesta segao, veremos a criagao do "Terreno baldio de treinamento do Tater", o aplicativo complementar do livro. Adotaremos uma abordagem do tipo "album de recortes", explorando alguns elementos-chave nas varias imagens. No site de recursos do livro, voce encontrara videos que explicam o proces­ so detalhadamente. Antes de chegar ao aplicativo real, vejamos a evolugao de um heroi.

Evolu^ao de um heroi Nesta segao, daremos uma olhada no processo criativo da criagao do Tater em seu processo de design. Mencionei no livro que Warner McGee ilustrou o Ta­ ter. Desde o inicio, eu sabia que precisaria de um ilustrador para criar o Tater, e meu primeiro pensamento foi o de contatar imediatamente Warner McGee. Foi incrivel trabalhar com ele neste projeto. Forneci a Warner alguns esbogos grosseiros da minha ideia do Tater e ele comegou a fazer sua magica a partir deles. Ele, entao, enviaria provas e eu faria alteragoes e daria sugestoes para que pudessemos aprimorar o Tater ate chegar a um desenho final que coincidisse com a minha ideia geral do personagem. Warner e eu nos divertimos muito desenvolvendo o Tater. Tivemos muitas discussoes criativas e foi muito FIG U R A A.1 Este e um conceito muito

legal ver uma ideia ganhar corpo. Logo no inicio, o Tater nao tinha nome, en­

inicial do Tater que enviei para Warner.

tao Warner e eu nos referiamos a ele como Bob.

FIG U R A A.2 Este esbo