Utilizando a biblioteca OpenGL(R) a partir de Java Março 24, 2007
Posted by pablo in Java, Terceiros.2 comments
Introdução
O OpenGL(R) é um dos mais difundidos e populares sistemas gráficos para rendering de gráficos 2D e 3D. É amplamente utilizado em projetos de pesquisa para visualização em geral e também utilizado em muitos jogos. Aproximadamente 60% dos jogos para Playstation, por exemplo, são feitos em OpenGL. O mais conhecido exemplo de jogo para PC construido inteiramente em OpenGL é o Quake da Id Software.
OpenGL funciona como uma máquina de estados complexa, cuja manipulação é feita através de rotinas simples que são invocadas por funções da API OpenGL. Normalmente as rotinas são executadas inteiramente dentro do Hardware da placa gráfica, caso esta tenha suporte nativo – o que é extremamente comum hoje em dia. De fato, qualquer placa que comprada hoje possuirá suporte direto as rotinas do OpenGL.
Comumente, o OpenGL possui bind completo em C, mas caso se deseje utiliza-la a partir de Java(tm), será preciso utilizar algum mecanismo que permita acessar os Entry-points do bind da implementação em C a partir da Virtual-Machine Java.
A maneira de fazer isso em Java é através de JNI (Java Native Interface). Na realidade existem muitas bibliotecas java já prontas que fornecem meios para acessar OpenGL a partir de java, utilizando JNI, com um bom grau de abstração.
Primeiramente vou começar explicando alguns tipos de aplicações que são possíveis de serem desenvolvidas com o OpenGL. Em seguida vou listar algumas opções para poder utilizar OpenGL a partir de Java.
Em meus anos de experiência com esta biblioteca gráfica, tive a oportunidade de conhecer bem a fundo seu potencial e seu poder de trabalho. Hoje em dia, as placas estão se tornando cada vez mais eficiêntes, e a nova geração GeForce 8800 possui um pipeline de processamento genérico, com 256 pipes. Isso significa que a placa gráfica hoje é capaz de executar uam quantidade enorme de instruções simples em série de maneira muito mais eficiente que os processadores comuns da CPU (por este motivo as aplicações modernas já procuram distribuir processamento entre a CPU e a GPU – Graphical Processor Unit).
O OpenGL fornece uma maneira de explorar todo o potencial do hardware da placa gráfica sem precisar se preocupar com uma linguagem de baixo nível (como assembly), o que realmente pode ser facinante. Para se ter uma ideia, é possível com o poder do hardware gráfico comum de hoje em dia renderizar uma cena complexa (milhões de triângulos e vértices) em frações de milésimos de segundo, o que é absolutamente impossível utilizando-se somente a CPU (que não é especializada e já possui uma grande carga do S.O).
Alguns exemplo de aplicação gráfica com OpenGL:
- Sistemas 3D para visualização de plataformas de petróleo em tempo real.
- Sistemas para visualização de dados geosísmicos e geográficos
- Jogos tridimensionais de alto desempenho
- Aplicações CAD ou de modelagem
- Grafos 3D ou Aplicações de Engenharia em geral
De uma forma geral, programar em OpenGL não é um problema somente de programação. Manipular OpenGL simplesmente requer conhecimentos sobre geometria e projeção tridimensional , bem como de sua arquitetura interna. Mas para quem tem experiência com bibliotecas gráficas, é simples migrar para o OpenGL.
À baixo listei e descrevi as duas melhores opções (na minha opinião) para se usar OpenGL em Java. A primeira, JOGL, é uma opçao para quem gosta de bibliotecas que usam o paradigma de orientação a eventos. A segunda, que na minha opinião é mais simples, é uma opção para quem gosta de uma biblioteca mais ao estilo de uso da biblioteca OpenGL em C.
Opções para uso do OpenGL em Java:
- The JOGL Java/OpenGL binding: Funciona através de eventos (listeners/observers). Possui interfaces Java que tem assinaturas de eventos de fucionamento, tais como:
- display: chamada sempre que a cena precisar ser desenhada na tela.
- displayChanged: chamada quando ocorrer alguma mudança na tela.
- init: chamada uma única vez no inicio para se ’setar’ configurações iniciais do estado do OpenGL ou da propria aplicação Java.
- reshape: Sempre que a janela for maximizada, minimizada ou reposicionada.
- Lightweight Java Game Library: É uma biblioteca mais leve e que não é orientada a eventos. Isso pode tornar as coisas mais simples para quem está acostumado a utilizar a biblioteca OpenGL em C ou C++.
Em ambos os links das bibliotecas listadas, existe uma boa documentação para inicio de uso. É claro que, existem algumas outras opções para se utilizar OpenGL de java, tal como o Java3D. No entanto estas opções não são tão bem documentadas e, especificamente o Java3D, não é simplesmente um binding para OpenGL, ele é todo um toolkit gráfico construído em cima do OpenGL, o que significa que ele tem um nível muito alto de abstração e possui grafo de cena e classes complexas. Ele pode ser uma boa opção para quem quer construir aplicações complexas ou jogos, pois certamente aplicações desse tipo requerem uma abstração em cima do OpenGL. Com as bibliotecas que eu citei, você mesmo pode construir uma outra biblioteca que abstrai de maneira particular as funcionalidades do OpenGL. Mas é claro que é preciso ter em mente que isso pode ser algo bem trabalhoso, então o Java3D pode ser uma boa opção em alguns casos.
A Inspiração vem de dentro – Diário da Revolução Novembro 21, 2006
Posted by felipecruz in Terceiros.add a comment
Enquanto eu preparo o próximo post, a leitura obrigatória de quem passa por aqui está abaixo!
Créditos ao blog http://bizrevolution.typepad.com/bizrevolution/
Eu particularmente concordo com todos os pontos, e você?
A Inspiração vem de dentro.
No século passado vencia quem tinha mais força nos braços. No século 21 vence quem é mais CRIATIVO.
Todo mundo sabe que a mais importante habilidade que todo Profissional, seja qual for a sua posição na empresa, deve praticar todos os dias chama-se CRIATIVIDADE.
Ninguém compra o melhor produto ou o melhor serviço, as pessoas compram o que é diferente.
O melhor é relativo. O Diferente é Diferente.
Ser Diferente traz mais resultados do que ser o Melhor.
Ser Diferente é o que importa.
Ser Criativo é o que interesse para ser diferente, para diferenciar a empresa, para diferenciar os produtos e serviços.
Ser Diferente! Diferenciar a Empresa! Criar Diferenciais!
Nada menos que isso interessa.
Uma recente pesquisa realizada pelo Creative Group em Maio de 2006 apontou que 93% dos executivos de marketing e vendas de médias e grandes empresas nos EUA disseram que o layout, a iluminação e a decoração do ambiente de trabalho impactam significativamente a criatividade das pessoas.
Chega de ambiente pesado! Chega de cara fechada! Chega de paredes cinzas!
Lá vão algumas idéias muito simples que se aplicadas vão estimular a criatividade da sua equipe, alavancar as vendas e a motivação da equipe.
Tá na hora de dar um banho de loja no ambiente de trabalho da sua equipe.
1. Crie zonas da criatividade para sessões de brainstorm, adicione quadros brancos para a turma rabiscar, espalhe revistas, muitas revistas sobre a sua indústria.
2. Transforme uma das paredes do seu escritório em uma parede de idéias. Estimule as pessoas a rabiscar a parede com idéias.
3. Ofereça um santuário privado onde os funcionários possam se concentrar sem o medo de ser distraídos.
4. Coloque as mesas próximas as janelas para que a turma possa ver o que acontece lá fora. (Os gerentes devem perder suas salas maravilhosas próximas as janelas). Se não houver janela o suficiente para todos, capriche na iluminação do ambiente.
5. Mude o cenário das suas reuniões. Faça reuniões de staff em lugares diferentes. Fora da sala de reunião, fora do ambiente que todo mundo conhece.
6. Coloque um banner, o maior possível, na sala de trabalho da equipe com a seguinte frase: “Quem você agradeceu hoje?”
7. Crie o “Café-da-Manhã das Sextas-Feiras”, onde uma vez por semana um dos funcionários deve trazer alguns comes e bebes para toda a equipe.
8. Monte árvore de natal no Natal, agite a quadrilha nas festas juninas, faça molecagem na semana da criança, pinte as paredes de verde e amarelo durante o mês de setembro, distribua livros no mês da volta as aulas.
9. Crie uma versão maluca de um produto ou serviço que você vende.
10. Coloque um poema ou uma letra de música diferente por dia na porta de entrada da empresa.
11. Compre um quadro de aviso e preencha-o com coisas legais, eventos legais, tudo que for diferente, relevante.
12. Exponha serviços e produtos inacabados da empresa em um determinado lugar para que todos os funcionários possam opinar durante a fase de protótipo.
13. Estimule os próprios funcionários a se tornarem palestrantes dos assuntos que dominam, por exemplo, o profissional do financeiro poderia ensinar finanças; os profissionais do marketing poderiam ensinar como fazer marketing pessoal para todos os funcionários da empresa.
14. Organize jantares, as famílias estão convidadas.
15. Estimule a prática de esportes entre a equipe, organize equipes de corrida, futebol, até xadrez.
16. Desafie um outro departamento da empresa para uma disputa esportiva.
17. Crie camisetas para a sua equipe usar.
18. Crie “Equipes QUEBRA TUDO” onde profissionais de diferentes departamentos devem trabalhar juntos para atacar um determinado problema que afeta a todos.
19. Todos os meses, determine duas ou três horas para limpar sua mesa, seu computador, jogar fora tudo que você nunca vai olhar mesmo.
20. Leve a natureza para dentro do escritório! Plantas, (animais).
21. Escute música! Crie um servidor na rede da empresa onde os funcionários podem armazenar arquivos de música e compartilhar com os colegas.
22. Planeje um dia para feedback em círculo, onde individualmente cada funcionário recebe feedback de todos os outros.
23. Comemore os Aniversários, não apenas das pessoas, mas também datas importantes para a cultura da empresa, como a Primeira Nota Fiscal, o Primeiro Grande Negócio, a Primeira Vez que a empresa quebrou etc.
24. Monte a biblioteca da empresa, distribua livros, recomende livros e leituras com frequência e consistência.
25. Permita que os funcionários trabalhem remotamente de suas casas.
26. Coloque quadros e pinturas ENGRAÇADAS na sala séria de reuniões da empresa.
27. Quebre o gelo antes do início de qualquer tipo de reunião, exemplos de quebra-gelo: Qual foi o seu primeiro trabalho? Se você pudesse ir para qualquer lugar do planeta, para onde você iria? Qual foi a sua maior realização profissional? Qual foi a última coisa realmente bonita que você viu?
28. Celebre o sucesso das pessoas, reconheça os vencedores na frente de todos.
29. Quando alguém for a uma conferência fora da empresa, assegure-se que o cidadão irá compartilhar o que viu com todos os colegas.
30. Crie um sistema de Mentor, principalmente para os novos funcionários.
31. Permita que os funcionários tragam fotos da família e dos filhos. Crie um mural com as fotos da família.
32. Distribua sorvete nos dias de calor, distribua chocolate quente nos dias de frio.
33. Lidere uma reunião chamada “Questões e Oportunidades” onde a turma lista as questões prioritárias que devem ser atacadas. Defina um líder para cada questão. Conduza essas reuniões semestralmente.
34. Sorria mais!
É óbvio que Você não precisa colocar em pratica todas essas idéias, entretanto, é também óbvio que você deve colocar em prática no mínimo metade delas.
Vamos dar um banho de loja na empresa!