jMonkeyEngine: Desenvolvimento 3D com Java

50 %
50 %
Information about jMonkeyEngine: Desenvolvimento 3D com Java
Technology

Published on June 29, 2009

Author: LeandroNunes85

Source: slideshare.net

Description

Palestra apresentada no FISL 10, em Porto Alegre/RS por Leandro Nunes, do RSJUG

jMonkeyEngine Desenvolvimento 3D com Java Leandro Nunes Leandro@RSJUG.org   http://leandron.wordpress.com  

Introdução  O que é jMonkeyEngine ?  É um engine(motor) para desenvolvimento 3D.  Desenvolvida 100% em Java, usa JNI para acessar bibliotecas nativas e comunicar diretamente com o hardware.  Cenas baseada em Grafo (graph-based)  Utiliza essa estrutura para representar todos os elementos da aplicação  Geometrias  Som  Iluminação    Física    etc...

Introdução  Exemplo    

Introdução  Vantagens da abordagem de graph-based  As transformações são aplicadas recursivamente aos nodos filhos  Rotação, Posicionamento, Escala, Iluminação...  Reduz a complexidade do algoritmo de renderização  “Se o nodo pai não é mostrado, então o nodo filho também não”    

Introdução  Arquitetura SEU CÓDIGO AQUI!!! Cenas Inputs Recursos Gráficos core jMonkeyEngine Importação Colisão Áudio Extensões da Comunidade LWJGL jME-Physics   OpenGL OpenAL jInput   ODE, PhysX

Formas Geométricas    

Formas Geométricas  São os nodos “folha” do grafo  Baseados em malhas de triângulos (TriMesh)  Extendem Spatial    

Formas Geométricas  Arrow  AxisRods    

Formas Geométricas  Box  RoundedBox  Capsule    

Formas Geométricas  Cone  Cylinder  Disk    

Formas Geométricas  Dodecahedron  Dome  Hexagon    

Formas Geométricas  Icosahedron  Octahedron  Pyramid    

Formas Geométricas  Quad  Sphere  Geosphere (esfera parametrizável)    

Formas Geométricas  Teapot  Torus    

Câmera    

Câmera  Câmeras são os objetos usados para visualizar o estado de uma cena.  Num dado momento a câmera “olha”, de um ponto para outro, fornecendo a nossa janela de visualização.    

Câmera  A Câmera fornece ao renderizador, quais posições da cena devem ser mostradas num determinado momento.  Utiliza um modelo de Visão Frustum para delimitar a área a ser mostrada.  http://en.wikipedia.org/wiki/Viewing_frustum    

Câmera    

Câmera  Câmeras podem ser adicionadas à qualquer nodo.  Isso abre possibilidade de fazer, por exemplo, com que uma câmera mostre a visão de um objeto em movimento, e acompanhe sua movimentação.    

Iluminação    

Iluminação  A iluminação é realizada através de pontos de luz, posicionados e configurados para emissão de cores, que incidem sobre os demais nodos.  Propriedades de um ponto de luz (LightNode)  Posição  Cor  Ângulo de difusão  Nodo a partir de onde a luz incide    

Inputs    

Input  O framework suporta os controles comuns para games (através de InputHandler)  Teclado  Mouse  Joystick  Eles podem ser automática ou programáticamente consultados no Game Loop    

Game Loop    

Game Loop  É o fluxo básico utilizado para produzir um game ou aplicação 3D  Looping compreendendo seis etapas principais  “Ciclo de vida” de um game    

Game Loop Inicialização do engine Inicialização da aplicação Início do game loop Atualiza dados dos objetos Renderização Continua ?   Finalização  

Perfis de Aplicação    

Perfis de Aplicação  AbstractGame  Define métodos abstratos necessários para implementar as fases do Game Loop.  start()  initSystem()  initGame()  update()  render()  reinit()  cleanUp()  close()    

Perfis de Aplicação  BaseGame  Implementa o fluxo mínimo de execução de uma aplicação 3D  Apenas o método start() recebe implementação  Os demais métodos abstratos de AbstractGame devem ser implementados  Fornece liberdade ao programador    Exige maior esforço de implementação  

Perfis de Aplicação  SimpleGame  Extende BaseSimpleGame  Fornece vários recursos prontos para o programador  Câmera (Camera)  Tratamento de Teclado e Mouse (InputHandler)  Timer  Ponto de Luz  Variáveis de controle de fps    

Perfis de Aplicação  StandardGame  Extende diretamente AbstractGame  Facilita desenvolvimento de recursos avançados em games  Aplicações cliente/servidor  Alternativa à PropertiesIO (GameSettings)  Força o processamento multi-thread de OpenGL  Permite trabalhar diretamente com a fila de processamento OpenGL (GameTaskQueueManager)    

Perfis de Aplicação  Um pouco sobre PropertiesIO  Armazena dados de configuração visual FREQ=60 RENDERER=LWJGL WIDTH=1280 HEIGHT=1024 DEPTH=32 FULLSCREEN=false  FAQ StandardGame   http://www.jmonkeyengine.com/wiki/doku.php?id=some_standardgame_frequently_asked_questions   

Perfis de Aplicação  Outros perfis  FixedFrameRateGame  Possibilita que o usuário configure o máximo frame rate  Garante que a aplicação não vai ficar mais rápida do que o declarado, mas não garante que não vai ficar mais lenta :-)  Indicado para aplicações em janela    

Hello World!    

Nosso estudo de caso    

Transformações Geométricas    

Transformações Geométricas  Translação  Define uma posição no espaço para qualquer objeto que seja Spatial Vector3f destiny = new Vector3f(10, 28, 35);  mySpatial.setLocalTranslation( destiny ); ou mySpatial.getLocalTranslation().set(10, 28, 35);    

Transformações Geométricas  Escala  Modifica o tamanho de um Spatial através da multiplicação pelo fator informado em todos os eixos. mySpatial.setLocalScale(5.0); mySpatial.setLocalScale(0.5);    

Transformações Geométricas  Escala (cont.)  Para realizar o escalamento por eixo (deformação), pode-se utilizar um objeto Vector3f mySpatial.setLocalScale(         new Vector3f(0.5f, 3.0f, 1.0f)     );    

Transformações Geométricas  Rotação  Gira o Spatial em um ou mais eixos.  A rotação é especialmente simplificada através do uso de objetos Quartenion    

Detecção de Colisão    

Detecção de Colisão  A detecção de colisão é feita através de objetos simplificados que cobrem o Spatial onde é feito cálculo de colisão de triângulos  Exemplo...    

Texturas e RenderState    

RenderState  Introdução aos RenderStates  Enquanto as Geometrias apresentam dados sobre “o que” deve ser desenhado, os RenderStates dizem “como” deve ser desenhado  Iluminação  Mapeamento de Texturas  Materiais  Wireframe  etc.    

RenderState  Suponha a seguinte situação  “Você tem um conjunto de árvores que deseja renderizar como geometrias texturizadas (TextureState). O ideal é agrupar todas elas em um nodo superior e setar esse nodo com o RenderState desejado. Economia de memória e aumento de desempenho!!!”  Utiliza em qualquer Spatial o método setRenderState() seguido de  updateRenderState() para aplicar as   transformações  

Textura    

Textura  Setando o TextureState    

Geração de Terrenos    

Geração de Terrenos    

Importação de modelos    

Importação de modelos  JmonkeyEngine fornece suporte a muitos formatos de modelos 3D, tanto de ferramentas proprietárias quando Open Source.  As principais ferramentas livres são suportadas  Blender é um bom exemplo    

Importação de modelos  Vejamos um exemplo...    

Integração com SWING    

Integração com SWING  Como vimos, existe um perfil específico para integração da jMonkeyEngine com aplicações SWING...  SimpleHeadlessGame  A Aplicação pode controlar externamente a cena 3D    

Integração com SWING  Dois exemplos  Criação de um ambiente 3D na aplicação SWING  Desenha Objetos SWING no ambiente 3D    

Dicas Finais    

Dicas Finais  Java já deixou de ser há muito tempo uma linguagem “lenta” para desenvolvimento 3D  Hoje o gargalo é o chip de processamento do vídeo.  Participe do projeto!    

Links Interessantes    

Links Interessantes  Site Oficial  http://www.jmonkeyengine.com  RSJUG  http://www.rsjug.org  Lista técnica de Java    

OBRIGADO! jMonkeyEngine: Desenvolvimento 3D com Java Leandro Nunes Leandro@RSJUG.org   http://leandron.wordpress.com  

Participem do  JUGDay do RSJUG! http://jugday.rsjug.org    

Add a comment

Related presentations

Presentación que realice en el Evento Nacional de Gobierno Abierto, realizado los ...

In this presentation we will describe our experience developing with a highly dyna...

Presentation to the LITA Forum 7th November 2014 Albuquerque, NM

Un recorrido por los cambios que nos generará el wearabletech en el futuro

Um paralelo entre as novidades & mercado em Wearable Computing e Tecnologias Assis...

Microsoft finally joins the smartwatch and fitness tracker game by introducing the...

Related pages

jMonkeyEngine - jMonkeyEnginejMonkeyEngine | jMonkeyEngine

jMonkeyEngine 3.1 Alpha 2 released! February 29, 2016; Official Release; Alpha 2 is here! Let’s get excited. You can get the engine distribution package ...
Read more

GitHub - jMonkeyEngine/jmonkeyengine: A complete 3D game ...

README.md jMonkeyEngine . jMonkeyEngine is a 3D game engine for adventurous Java developers. It’s open source, cross platform and cutting edge.
Read more

How to Learn jMonkeyEngine 3 - Game Development Envato Tuts+

How to Learn jMonkeyEngine 3. ... Although jMonkeyEngine is primarily a 3D game engine, ... Java. jMonkeyEngine is written entirely in Java, ...
Read more

jMonkeyEngine 3 SDK, or "Editor"jMonkeyEngine

The jMonkeyEngine SDK (Software Development Kit) is an extensive collection of game development tools built on top of the industry leading NetBeans Platform.
Read more

jMonkeyEngine 3.0 Game Development: A Practical Guide

jMonkeyEngine 3.0 is a high ... jMonkeyEngine 3.0 Game Development: A Practical Guide covers the basics ... > Learn how to develop 3D games using Java ...
Read more

Java Game Development Using jMonkeyEngine

Java game development continues to ... stunning 3D games using jMonkeyEngine. ... entirely on Java, games developed using jMonkeyEngine can easily ...
Read more

sdk [jMonkeyEngine Wiki]

... rather than using a generic Java IDE. (What's an IDE?) ... Since the jMonkeyEngine SDK is based on the NetBeans Platform (Why not Eclipse RCP?), ...
Read more

jMonkeyEngine – Wikipedia

jMonkeyEngine; Maintainer: Erlend Sogge ... die auf Java 3D-Entwicklung spezialisiert ist und neben einem Quelltexteditor schnelle Dateikonvertierung und ...
Read more

jMonkeyEngine: 3D-Engine für Java-Spiele | ME and my U

4 Kommentare zu jMonkeyEngine: 3D-Engine für Java-Spiele. Kommentar von Andreas 23. Oktober 2012, 19:41 Uhr. Hach, dass es die noch gibt.
Read more