Interface 3D para ambiente de simulação



Documentos relacionados
PROGRAMAÇÃO JAVA. Parte 1

Linguagem de Programação JAVA. Professora Michelle Nery Nomeclaturas

Desenvolvimento Web TCC Turma A-1

Programação de Computadores II TCC Turma A-1

Programação de Computadores - I. Profª Beatriz Profº Israel

Lógica de Programação

Java & OpenJDK. Thiago S. Gonzaga. Sun Campus Ambassador thiago.gonzaga@sun.com

GereComSaber. Desenvolvimento de Sistemas de Software. Universidade do Minho Conselho de Cursos de Engenharia Licenciatura em Engenharia Informática

Capítulo 1. Introdução ao Java. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Como se tornar um desenvolvedor de plug-ins para AutoCAD e Revit

Interface Homem Máquina para Domótica baseado em tecnologias Web

CURSO DE PROGRAMAÇÃO EM JAVA

GereComSaber. Disciplina de Desenvolvimento de Sistemas de Software. Sistema de Gestão de Serviços em Condomínios

INTRODUÇÃO E CONFIGURAÇÃO DO PRIMEFACES MOBILE EM APLICAÇÕES JSF

Manual de utilização do Moodle

Introdução. à Linguagem JAVA. Prof. Dr. Jesus, Edison O. Instituto de Matemática e Computação. Laboratório de Visão Computacional

Construção de um WebSite. Luís Ceia

Base de Dados para Administrações de Condomínios

Sumário. Computação Gráfica Illustrator

Adobe Flex. Cainã Fuck dos Santos Thiago Vieira Puluceno Jonathan Kuntz Fornari Gustavo Nascimento Costa

Aula 2: RIA - Aplicações Ricas para Internet Fonte: Plano de Aula Oficial da Disciplina

Introdução à Linguagem Java

Orientação a Objetos com Java

REFORÇO DE PROGRAMAÇÃO ESTRUTURADA EM LINGUAGEM C PARA GRADUAÇÃO EM ENGENHARIA ELÉTRICA

ESTUDO COMPARATIVO ENTRE AS PLATAFORMAS ARDUINO E PIC

Comparando Java e C#

Organizar a estrutura do site

O que é o Virto ERP? Onde sua empresa quer chegar? Apresentação. Modelo de funcionamento

CONCEITOS BÁSICOS DE UM SISTEMA OPERATIVO

Como funciona a MEO Cloud?

Instalando o J2SE 5.0 JDK no Windows 2000/XP

Introdução a Informática - 1º semestre AULA 02 Prof. André Moraes

FERRAMENTAS E SOLUÇÕES DE APOIO À GESTÃO E MANUTENÇÃO DE ATIVOS

Aplicação Prática de Lua para Web

1. Apresentação Objetivos

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi

Satélite. Manual de instalação e configuração. CENPECT Informática cenpect@cenpect.com.br

Manual de Utilizador. Disciplina de Projecto de Sistemas Industriais. Escola Superior de Tecnologia. Instituto Politécnico de Castelo Branco

PdP. Autor: Luís Fernando Patsko e Tiago Lone Nível: Intermediário Criação: 26/12/2005 Última versão: 18/12/2006

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

DESENVOLVIMENTO PARA DISPOSITIVOS MÓVEIS. PROFª. M.Sc. JULIANA H Q BENACCHIO

DESENVOLVIMENTO DE PROGRAMA MULTIMIDIA PARA O ENSINO DEDINÂMICA DE MÚLTIPLOS CORPOS

Manual do Usuário Android Neocontrol

Optimização de um Mundo Virtual

ANIMAÇÕES WEB AULA 2. conhecendo a interface do Adobe Flash. professor Luciano Roberto Rocha.

GeoMafra Portal Geográfico

PRINCÍPIOS DE INFORMÁTICA PRÁTICA OBJETIVO 2. BASE TEÓRICA 3. SEQÜÊNCIA DA AULA. 3.1 Iniciando o PowerPoint

Open Graphics Library OpenGL

Modelo Cascata ou Clássico

Guião de Introdução ao Eclipse IDE Índice

SISTEMAS OPERACIONAIS. Maquinas Virtuais e Emuladores

Introdução ao Aplicativo de Programação LEGO MINDSTORMS Education EV3

OFICINA USO DO I3GEO. Levindo Cardoso Medeiros.

Capítulo 2 Introdução à ferramenta Flash

O AMBIENTE DE TRABALHO DO WINDOWS

O nome ANT é uma sigla para another neat tool (mais uma ferramenta organizada), segundo seu autor James Duncan Davidson.

Guia de Prova de Aptidão Profissional

Ferramentas Web, Web 2.0 e Software Livre em EVT

Manual de Utilização de Webcams no. Desenvolvimento de Aplicativos Java

Desenvolvendo Websites com PHP

RELATÓRIO DE DESENVOLVIMENTO DE PRODUTO: SITE DIVULGANDO OS FILMES

FACULDADE SENAC-RS PELOTAS RODRIGO ALMEIDA PEREIRA. Sistemas de Informação

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ CURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

Um Driver NDIS Para Interceptação de Datagramas IP

Conhecendo o Proteus

Tópicos de Ambiente Web. Modulo 2 Processo de desenvolvimento de um site Professora: Sheila Cáceres

CONSTRUÇÃO DE JOGOS: FERRAMENTA ELETRÔNICA PARA ENSINO DA RESOLUÇÃO DO CUBO DE RUBIK

XI Mestrado em Gestão do Desporto

SISTEMAS DE INFORMAÇÃO PARA GESTÃO

Tutorial Gerar arquivo PDF. Gerando um documento pdf com várias imagens 1- Inserir imagem no Word

DELPHI 7 LINGUAGEM DE PROGRAMAÇÃO AMBIENTE CLIENTE SERVIDOR

TESTES AUTOMATIZADOS COM JUNITE MOCKITO

FLUXO DE CAIXA: Módulo BI (Business Intelligence)

6. Geometria, Primitivas e Transformações 3D

Microsoft Office PowerPoint 2007

LABORATÓRIO VIRTUAL DE MATEMÁTICA EM DVD

Java Básico. Aula 1 por Thalles Cezar

Desenvolvimento de uma Aplicação WEB para monitorização de BD Oracle

Neste tutorial irá criar uma animação simples com base num desenho do Mechanical Desktop.

5. Métodos ágeis de desenvolvimento de software

1 ARQUITECTURA DO PRODUTO - MODULARIZAÇÃO E SISTEMAS DE PLATAFORMAS NA INDUSTRIA FERROVIÁRIA

OBJETIVO Criação e execução de um projeto Android dentro da IDE IntelliJ.

02 - Usando o SiteMaster - Informações importantes

Como Gerar documento em PDF com várias Imagens

Operador de Computador. Informática Básica

Tarefa Orientada 2 Criar uma base de dados

Nome N Série: Ferramentas

Pesquisa e organização de informação

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0

REALIDADE AUMENTADA APLICADA NA EDUCAÇÃO: ESTUDOS DOS SEUS BENEFÍCIOS

UNIVERSIDADE ESTADUAL DA PARAÍBA CENTRO DE CIÊNCIAS E TECNOLOGIA DEPARTAMENTO DE QUÍMICA CURSO DE LICENCIATURA EM QUÍMICA LINDOMÁRIO LIMA ROCHA

KVM CPU Switch 4 Portas Manual do Usuário

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

Linguagem de Programação Visual

O Windows 7 é um sistema operacional desenvolvido pela Microsoft.

Transcrição:

Interface 3D para ambiente de simulação Mário Rui Rebelo Fernandes Nº20191 Trabalho realizado sob a orientação de Professor Paulo Matos Engenharia Informática 2011/2012

Interface 3D para ambiente de simulação Relatório da UC de Projecto Licenciatura em Engenharia Informática Escola Superior de Tecnologia e de Gestão Mário Fernandes Setembro 2012 iii

A Escola Superior de Tecnologia e Gestão não se responsabiliza pelas opiniões expressas neste relatório. iv

Certifico que li este relatório e que na minha opinião, é adequado no seu conteúdo e forma como demonstrador do trabalho desenvolvido no âmbito da UC de Projecto. Paulo Matos Orientador Certifico que li este relatório e que na minha opinião, é adequado no seu conteúdo e forma como demonstrador do trabalho desenvolvido no âmbito da UC de Projecto. <Nome do Arguente> Arguente Aceite para avaliação da UC de Projecto v

vi

Agradecimentos Queria prestar o meu devido agradecimento a toda gente que me acompanhou durante a elaboração deste projecto. Ao meu orientador em particular, Paulo Matos, pelo apoio e acompanhamento ao longo deste projecto. A família pelo esforço e apoio, pois sem eles não era possível estar a fazer este projecto. A todas as pessoas ligadas de alguma forma ao IPB, particularmente a ESTIG, pois foi onde passei os últimos 5 anos e onde me formei academicamente. E também a todos os meus amigos com quem partilhei esta fase da minha vida e sempre estiveram comigo em todos os momentos. vii

viii

Resumo Este projecto visou o desenvolvimento de uma framework para modelação 3D de linhas de produção. A representação gráfica obtida com esta framework permite representar a topologia da linha, navegar no espaço fabril visualizando a linha de diferentes perspectivas, visualizar o estado das máquinas, interactuar com as máquinas e ver a dinâmica da linha em pleno funcionamento. A framework foi construída para ser integrada no projecto DASE Distributed Agent Simulation Environment, facultando assim uma interface gráfica tridimensional para este ambiente de simulação. Palavras-chave: simulação, linhas de montagem, JavaFX, modelação 3D ix

x

Abstract This project sought to develop a framework for 3D modeling of production lines. The graphical representation obtained with this framework allows to represent the topology of the line, navigate the factory space by viewing the line from different perspectives, view the status of machines, interact with machines and see the dynamics of the line in full operation. The framework was built to be integrated in the project DASE - Distributed Agent Simulation Environment, so providing a GUI for this three-dimensional simulation environment. Keywords: simulation, production lines, JavaFX, 3D modeling xi

xii

Conteúdo 1 Erro! Auto-referência de marcador inválida.... 1 1.1 Objectivos... 1 1.2 Organização do relatório... 2 2 Linguagem Java... 4 2.1 Conceitos básicos de computação... 5 2.2 JavaFX... 6 2.2.1 História JavaFX... 8 2.3 NetBeans... 9 3 Implementação... 11 3.1 Transformações em Java FX... 11 3.2 Translação, rotação, escala... 12 3.2.1 Câmara controlável... 12 3.2.2 Translações... 13 3.3 Animações em JavaFX... 13 4 Modo de funcionamento... 15 4.1 A linha de montagem... 15 5 Conclusão... 18 5.1 Objectivos alcançados... 18 5.2 Análise Crítica... 18 5.3 Objectivos futuros... 18 xiii

xiv

Lista de Figuras Figura 1- Logótipo do Java... 4 Figura 2- Modelo de funcionamento do JavaFX... 6 Figura 3 - JavaFX roadmap... 8 Figura 4 - NetBeans... 9 Figura 5 - Cubos tridimensionais em JavaFX... 15 Figura 6 - diagrama de classes... 16 Figura 7 - linha de montagem... 17 xv

xvi

Lista de Abreviações API - Application Programming Interface (ou Interface de Programação de Aplicativos) 3D - 3 dimensões SDK - Software Development Kit (ou Kit de Desenvolvimento de Software) JVM - Java Virtual Machine IDE - Integrated Development Envirenment (ou Ambiente Integrado de Desenvolvimento) RIA Rich Internet Application (ou Aplicações de Internet Rica) xvii

xviii

Capítulo 1 1 Erro! Auto-referência de marcador inválida. 1.1 Objectivos O desenvolvimento deste projecto, tem como objectivo, oferecer a possibilidade de visualizar em 3D, uma linha de produção de uma fábrica, com interacções e animações em tempo real. Pretende-se que através desta interface se possa realizar simulações e testes da própria linha, evitando estes tenham que ser feitos sobre a linha real. O que compreensivelmente tem sérias desvantagens, dado que os testes reais normalmente implicam a paragem da linha por tempos muito longos, afectando directamente a produção, o que normalmente não é viável. Para além da representação tridimensional da linha, esta interface deverá permitir reflectir o estado das máquinas, interagir com as máquinas, visualizar o processo produtivo em si. O objectivo não é construir um exemplo concreto de uma linha, mas criar uma framework contendo os objectos e recursos necessários para facilmente permitir representar em 3 dimensões uma qualquer linha de produção. Espera-se que esta framework 1 de modelação tridimensional em Java contribua de forma efectiva para ajudar a simular e optimizar os recursos de uma linha de montagem fabril. 1 Uma framework consiste num conjunto de interfaces, que define o tipo e o comportamento das entidades envolvidas; e num conjunto de classes, que implementam integralmente ou parcialmente as interfaces. A função de uma framework é agilizar o processo de criar soluções que funcionem de acordo com princípios predefinidos. 1

1.2 Organização do relatório Este relatório encontra-se organizado em 5 capítulos distintos. O primeiro capítulo faz uma introdução aos objectivos e demonstra a organização do relatório. No segundo capítulo é apresentada a linguagem Java, são descritos conceitos básicos de computação, é introduzido o JavaFX, que é a base deste trabalho, descrevendo a linguagem e um pouco da sua história. É também descrito o ambiente de desenvolvimento, o NetBeans. No terceiro capítulo encontram-se as implementações de transformações em JavaFX, tais como translação, rotação, escala, o efeito de câmara controlável e as animações. O quarto capítulo dispõe o modo de funcionamento da linha de montagem. Por fim, no quinto capítulo são feitas as conclusões, os objectivos alcançados, uma análise crítica e os objectivos futuros. 2

3

Capítulo 2 2 Linguagem Java Figura 1- Logótipo do Java Como a linguagem Java é a ferramenta base deste trabalho, vou prosseguir com um pequeno resumo sobre a mesma.o Java é uma linguagem de programação orientada a objectos, independente de plataforma, que foi desenvolvida pela Sun Microsystems, Inc na década de 90 por uma equipa liderada por James Gosling. Actualmente, é uma das linguagens mais utilizadas para o desenvolvimento de sistemas, e pode ser obtida gratuitamente em http://java.sun.com. O SDK Java é composto por um compilador e por uma máquina virtual contendo um interpretador. Diferentemente das linguagens convencionais, em Java o compilador transforma o programa em bytecodes 2, que consiste num tipo de código de máquina específico para a máquina virtual do Java. A máquina virtual do Java, JVM, contém um interpretador para processar os bytecodes, bem como todos os elementos necessários à execução deste código. A JVM é dependente da plataforma onde é instalada, mas actualmente existem JVM para praticamente todo o tipo de plataformas. Para o desenvolvimento de programas em Java, é preciso instalar o J2SE (Java 2 Platform, Standard Edition) que inclui compilador, a JVM e as bibliotecas. Estas englobam os pacotes que contêm as classes responsáveis pelas funcionalidades de entrada e saída, interface gráfica, colecções, entre outras. Além disso, existe a Java Standard Extension API, que inclui outros 2 Código em bytes 4

pacotes, tais como, acesso a base de dados e o Java Media Framework, que suporta tecnologias gráficas e multimédia. Em 2006, a Sun lançou a maior parte do Java como software livre, e é hoje um padrão para todos os programadores, e usada para diversos fins. 2.1 Conceitos básicos de computação Nesta descrição vou referir alguns aspectos de um trabalho sobre java 3D, que pode ser consultado na bibliografia [10], visto que penso que possam ser importantes para compreender a visualização de modelos 3D. Para entender a API JavaFX, que foi utilizada neste projecto para desenvolver a framework, é importante conhecer alguns conceitos básicos de computação gráfica. Transformações geométricas de escala, rotação e translação, manipulação da câmara sintética, projecção perspectiva, iluminação, cor e sombra são algumas das técnicas utilizadas para contribuir na geração de imagens de alta qualidade. As transformações geométricas consistem em operações matemáticas que permitem alterar uniformemente o aspecto de objecto(s), mas não a sua topologia. São usadas para posicionar, rodar, e alterar o tamanho dos objectos no universo. O conceito de câmara sintética é usado para definir de que posição o objecto será visualizado, como se fosse obtida uma foto quando a câmara estava numa dada posição direccionada para o objecto. Neste processo, torna-se necessário aplicar uma projecção, que é o procedimento utilizado para se obter representações 2D de objectos 3D. Várias técnicas também foram desenvolvidas para tentar reproduzir a realidade em termos de aparência, por exemplo, efeitos de iluminação. Portanto, diversas fontes de luz podem ser incluídas num universo para permitir a simulação da reflexão dos objectos, que possibilita descrever a interacção da luz com uma superfície, em termos das propriedades da superfície e da natureza da luz incidente. 5

2.2 JavaFX Figura 2- Modelo de funcionamento do JavaFX Com as exigências de um mercado globalizado e altamente competitivo surgiu a necessidade de tecnologias inovadoras que se propusessem a unir os conceitos web e desktop no mesmo ambiente, tornando assim mais simples a criação de aplicações interactivas e portáteis. Contudo isso só foi possível após a criação do conceito RIA, que permitiu que tecnologias como JavaFX surgissem e proporcionassem melhores experiências para os utilizadores. Assim sendo, aplicações RIA oferecem melhor usabilidade, interactividade e interfaces mais intuitivas, produzindo assim um software mais rico em recursos e mais satisfatório para o utilizador. A plataforma JavaFX une características interessantes como a aproximação entre programadores e designers. Isso conduz a novas perspectivas, pois possibilita o desenvolvimento ágil de aplicações por meio de trabalho mútuo. Esta interessante plataforma, que une variados conceitos, é a promessa da tecnologia Java para aplicações RIA, que cria no mercado um novo conceito de interactividade e usabilidade. A plataforma JavaFX é a evolução da plataforma Java, projectada para permitir que programadores criem e desenvolvam aplicações que são consistentes em múltiplas plataformas. Construída sobre a tecnologia Java, o que facilita o uso de ferramentas já existentes, a plataforma JavaFX fornece um rico conjunto de gráficos e uma API de alto desempenho com aceleração de hardware e motores de multimédia que simplificam o desenvolvimento de aplicações. Com esta tecnologia podem ser criadas aplicações para sistemas operativos, browsers, e smartphones. 6

JavaFX é baseado no conceito common Profile, que representa a reutilização da maioria do código em todos os dispositivos, sejam eles móveis ou desktops. Permitindo assim aos programadores usar modelos standard de programação, que sirvam tanto para desktop como para dispositivos móveis. O JavaFX inclui ainda plugins 3 para permitir que se possa integrar aplicações directamente no JavaFX, estes plugins geram códigos em JavaFXScript que preservam o layout 4 e a sua estrutura. A Adobe Photoshop e Adobe Illustrator são 2 exemplos de plugins disponíveis no JavaFX. A arquitectura do JavaFX foi elaborada de forma a proporcionar de uma forma simples e intuitiva o desenvolvimento de aplicações. Uma vez que a sua plataforma baseia-se na Maquina Virtual Java, o JavaFX herda os princípios de portabilidade entre sistemas operacionais, beneficiando assim da maturidade e desempenho da plataforma Java. Analisando a Figura 2 podemos observar que o JavaFX está implementado segundo uma arquitectura de camadas. Na base da arquitectura encontramos a Java Virtual Machine, que tem como função interpretar e executar o bytecode produzido pelo ambiente em tempo de execução do JavaFX. No JavaFX Runtime, através do seu compilador que estende as características do compilador Java, gera bytecode compatível com a JVM, permitindo assim que a plataforma passe a usufruir de uma máquina virtual estável. Common Elements são APIs comuns a todos os modelos de desenvolvimento, permitindo assim uma grande reutilização do código escrito. Desktop, mobile e tv elements, são também APIs projectadas para cada um dos modelos de desenvolvimento. Application Framework, são funcionalidades utilizadas para o desenvolvimento de aplicações JavaFX, o que inclui a linguagem JavaFXScript. Sobre as Tools podemos dizer que o JavaFX permite que tarefas sejam segmentadas em áreas especializadas como o design e o desenvolvimento de por exemplo plugins. No entanto a área mais explorada neste projecto é a 3D do JavaFX, que tem bastantes similaridades com o Java3D, pois é nela que é assente o objectivo deste projecto, que é o ambiente para simulação 3D. 3 Usado para adicionar funções a programas maiores 4 Área de visualização 7

2.2.1 História JavaFX Fazendo referência ao site da wikipedia.pt, onde temos um pouco da História do JavaFX, constatamos que o JavaFX Script a linguagem de programação para JavaFX, começou por um projeto de Chris Oliver chamado de F3. Este foi anunciado pela Oracle na JavaOne WorldWide Java Developer, numa conferência em Maio de 2007.. Foi no ano de 2008, que ficou disponível para todos os programadores o download do JavaFX Sdk para Windows e Mac, juntamente com os plugins para NetBeans, alargando assim a comunidade de programadores interessados na linguagem. Dia 4 de dezembro de 2008 a Sun disponibilizou o JavaFX 1.0. Actualmente a versão JavaFX2.2 já é suportada pelo Linux. Inicialmente não tinha suporte devido aos gráficos e animações avançadas que não eram suportadas pelo sistema. A Figura 3 ilustra a evolução do JavaFX e os planos da Oracle para esta tecnologia. Figura 3 - JavaFX roadmap. 8

2.3 NetBeans Figura 4 - NetBeans O NetBeans é já um famoso ambiente de desenvolvimento disponível para Windows, Mac, Linux e Solaris. O projecto Netbeans consiste num IDE de código aberto e numa plataforma que permite ao programadores criar rapidamente aplicações Web, desktop, aplicações móveis, usando linguagens como Java, PHP, JavaScript, Ajax, Groovy, C, C++, entre outras. Apoiado por uma enorme comunidade de programadores, com uma extensa documentação, tutoriais e uma longa lista de plugins, é certamente uma plataforma a ter em destaque. A Historia do NetBeans começou em 1996, quando dois estudantes Tchecos na Universidade de Charles em Praga, começaram o projecto inicialmente chamado de Xelfi, em alusão ao Delphi, pois a pretensão deste projecto era ter funcionalidades semelhantes aos IDEs então populares do Delphi que eram mais atractivas por serem ferramentas visuais e mais fáceis de usar, porém com o intuito de ser totalmente desenvolvido em Java. Em 1999 o projecto foi chamado de NetBeans DeveloperX2, em alusão a ideia de reutilização de componentes de que eram a base do Java. Foi então que a Sun Microsystems adquiriu o projecto NetBeans DeveloperX2, incorporando-o na sua linha de softwares. Em Junho de 2000 a Sun disponibilizou o código fonte do IDE NetBeans, tornando-o uma plataforma OpenSource. Desde então a comunidade de programadores que utilizam e contribuem para o projecto não parou de crescer, tornando-se uma das IDEs mais populares da actualidade. Podemos visualizar na Figura 4 o ambiente de trabalho do NetBeans. 9

10

Capítulo 3 3 Implementação 3.1 Transformações em Java FX As transformações do JavaFX são bastante importantes para a elaboração deste projecto, pois são a base do modelo 3D apresentado. A transformação altera o local de um objecto gráfico, de um sistema de coordenadas de acordo com certos parâmetros. Os seguintes tipos de transformações são suportados em JavaFX: Translação, rotação, escala e shearing. A transformação de shearing foi a única a não ser utilizada, pois para os objectivos pretendidos, é uma transformação que não tem utilidade neste projecto. Estas transformações podem ser aplicadas a um nó independente ou a grupos de nodos. Pode aplicar-se uma transformação num momento ou pode-se combinar transformações e aplicar várias transformações para um nó. Transformações em JavaFX podem ser realizadas ao longo de três coordenadas, permitindo criar objectos tridimensionais (3-D) e efeitos. Para ser possível visualizar objectos 3D e efeitos de transformação em Java FX, deve-se activar a perspective câmara. 11

3.2 Translação, rotação, escala A transformação de translação desloca de um nó de um lugar para outro, ao longo de um dos eixos em relação à sua posição inicial. A posição inicial é definida pelas coordenadas x, y e z. Outras variáveis podem ser adicionadas para simplificar os cálculos ao aplicar transformações diferentes. As translações são usadas para definir todas as posições de todos os elementos criados no modelo 3d, com elas definimos as posições nos eixos, x,y e z. Estas posições podem ser modificadas, fazendo assim com que elementos tenham novas posições. A transformação de rotação move o nó em torno de um ponto de rotação especificado da cena. Para girar a câmara ao redor da linha de montagem, a transformação de rotação é usada, porque tecnicamente, é a linha de montagem em si que se move quando o rato gira a câmara. A transformação de escala faz com que um nó pareça maior ou menor, dependendo da escala implementada, visto que esta é multiplicada ao longo dos eixos mudando assim as dimensões. Tal como acontece na translação e rotação, as transformações são aplicadas num ponto pivot, e é a volta deste ponto que ocorre a escala. Em todos os cubos criados foi aplicada uma escala, para definir o seu tamanho, pois este varia dependendo do elemento que é pretendido criar através do cubo. 3.2.1 Câmara controlável Neste projecto é possível visualizar os moledos 3D de qualquer angulo, para isso basta manter a tecla alt pressionada enquanto se move com o rato com o botão esquerdo pressionado. Para fazer o zoom in ou zoom out, é o mesmo processo mas desta vez mantem-se o botão direito do rato pressionado. Para explicar como esta funcionalidade é implementada, é necessário perceber que não é a câmara que se move, mas sim todos os elementos criados em 3D é que são rodados através da função transformação de rotação, como foi em cima mencionado na descrição da transformação de rotação. 12

A função de zoom in e zoom out, é um processo idêntico mas desta vez é aplicada a transformação de escala a todos os elementos, dando assim a sensação de aproximação e afastamento. 3.2.2 Translações As translações são usadas para definir todas as posições de todos os elementos criados no modelo 3D, com elas definimos as posições nos eixos, x,y e z. Estas posições podem ser modificadas, fazendo assim com que elementos tenham novas posições. 3.3 Animações em JavaFX As animações em JavaFX podem ser do tipo: transitions e timeline animation. Neste projecto vamos dar atenção às transitions, pois foram o tipo de animações utilizadas. Estas transições podem ser compostas para criar várias animações que podem ser executadas em paralelo ou sequencialmente. As animações são um factor importante neste projecto, pois é através delas que vamos poder visualizar tudo que acontece na linha de montagem. São usadas tanto animações na traslação de elementos como para sequências de translações. 13

14

Capítulo 4 4 Modo de funcionamento 4.1 A linha de montagem Figura 5 - Cubos tridimensionais em JavaFX Inicialmente é criada uma cena, ou seja o nosso universo 3D. Todos os elementos criados pertencem a um grupo, chamado rectanglegroup. É através da classe Cube, que se criam todo o tipo de elementos gráficos característicos da linha de produção, ou seja é esta a classe principal. Dela derivam outras classes que permitem criar as máquinas, pela classe MyCube e tapetes, pela classe MyTapete, como se observar na Figura 6. Os produtos são criados directamente pela classe Cube. 15

Figura 6 - diagrama de classes Como podemos observar na Figura 7 a modelação de uma linha constituída por uma base, 1 ou mais máquinas de produção e os respectivos tapetes. Cada máquina é ainda constituída por um botão, que permite ligar (botão fica verde) e desligar a máquina (botão fica vermelho), e por um botão laranja que assinala se a máquina está ou não em funcionamento, isto é, a operar. Temos ainda um cubo azul, que corresponde ao produto, que vai ser introduzido na máquina para ser trabalhado. Quando termina a operação sobre o produto este sai pelo lado oposto da máquina. Ao longo do modelo 3D podemos ver a linha de montagem com as máquinas, e accionando as animações podemos ver o estado da máquina (ligada ou desligada), as maquinas a trabalhar o produto e este a prosseguir de uma máquina para a seguinte. 16

Figura 7 - linha de montagem 17

5 Conclusão Foi um longo caminho para a realização deste projecto, por vezes ate lento, devido a necessidade de aprender toda a linguagem de raiz, e pela necessidade de uma constante pesquisa sobre a mesma. A aprendizagem da linguagem JavaFX foi feita através de tutorias, informação da Oracle, samples existentes, entre outras fontes. Finalmente foi feita a implementação dos conteúdos aprendidos, começando a projectar aquilo que realmente importava, a framework para a linha de montagem. 5.1 Objectivos alcançados A framework para a simulação da linha de montagem foi conseguida, sendo assim possível adicionar máquinas à linha e realizar as devidas simulações com visualização em 3D. 5.2 Análise Crítica Uma vez finalizado o trabalho, é necessário ver o que correu bem, mas também os aspectos que se podem ser melhorados. Quanto ao ambiente de desenvolvimento, não há muito a apontar, visto que o NetBeans é uma excelente escolha, a sua reputação já fala por si. A linguagem JavaFX, pela experiencia que constatei é bastante boa, sendo bastante intuitiva. Um aspecto em que posso melhorar será uma compreensão mais aprofundada da linguagem, que permite muito mais. 5.3 Objectivos futuros Penso que para o futuro da framwork da linha de montagem, podem ser desenvolvidas simulações que se possam prever da linha real. Melhorias são sempre possíveis em qualquer trabalho e este não foge a excepção. Fazer com que mais problemas possam ser resolvidos na 18

simulação, em vez de na vida real, será uma mais-valia para a framwork, e consequentemente para qualquer linha de produção fabril. 19

Referências bibliográficas. [1] http://pt.wikipedia.org/wiki/netbeans [2] http://pt.wikipedia.org/wiki/javafx [3] http://pt.wikipedia.org/wiki/java_(linguagem_de_programa%c3%a7%c3%a3o) [4] http://pt.wikipedia.org/wiki/java_3d [5] Lopes, Jackson Dos Santos. Tavares, Rodrigo Oliveira. JAVAFX: Uma abordagem ao desenvolvimento de aplicações RIA. UNIVERSIDADE FUMEC FACULDADE DE CIÊNCIAS EMPRESARIAIS. Disponivel em: http://www.ricardoterra.com.br/publications/students/2010_lopes_e_tavares.pdf [6] http://docs.oracle.com/javafx/2/transformations/jfxpub-transformations.htm [7] http://docs.oracle.com/javafx/2/animations/jfxpub-animations.htm [8] http://learnjavafx.typepad.com/weblog/3d-with-javafx/ [9] http://docs.oracle.com/javafx/2/api/overview-summary.html [10] http://www.inf.pucrs.br/manssour/publicacoes/tutorialsib2003.pdf [11] http://learnjavafx.typepad.com/weblog/3d-with-javafx/ [12] http://jfx.wikia.com/wiki/planet_jfx_wiki 20

21

22