Ferramentas de Desenvolvimento Rápido de Jogos 3D [DarkBasicPro] Prof. Osório Pag.: 1



Documentos relacionados
HANDS ON DARK GDK Outubro/2008 Prof. F.Osório / ICMC-USP - fosorio <at> gmail.com. DICAS DE INSTALAÇÃO DO DARK GDK / TheGameCreators (TGC)

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação

Transformações 3D. Soraia Raupp Musse

Componentes de um Jogo Abertura, Encerramento Configuração de Dispositivos Trilha Sonora, Efeitos Sonoros Créditos, Scores, Recursos Multiplayer,...

Pedro Vasconcelos DCC/FCUP. Programação Funcional 12 a Aula Jogos usando Gloss

Coordenadas Polares. Prof. Márcio Nascimento.

Manual de Processos ISS Online. Novo Cadastro e Associar Contador a Empresa

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

Cálculo Diferencial e Integral II

Curso de extensão em Blender Prof. Luiz Gonzaga Damasceno

ROBERTO OLIVEIRA CUNHA

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (C6/6) Curso: Informática

CÓD.: MANUAL DO USUÁRIO PORTA RETRATO DIGITAL 7"

GUIA RÁPIDO DE PROGRAMAÇÃO (CNC PROTEO)

FICHA DE TRABALHO 6 - RESOLUÇÃO

Autodesk Inventor 7. Tutorial de Modelamento 3D Básico. Modelamento de uma Polia. Autor: Cristiano Nogueira Silva

PROJETISTA E DESIGN 3D

The Graphics Pipeline

O HyperMedia Center é um aplicativo multimídia integrado que permite. aproveitar plenamente seu entretenimento digital TV, home vídeos e fotos.

Óptica Geométrica: Óptica de raios com matrizes

ÓPTICA GEOMÉTRICA. Lista de Problemas

Computação Gráfica 3D Studio Max Prof.: Luiz Gonzaga Damasceno

MANIPULAÇÃO 3D ARITIMÉTICA DE VETORES

fx-82ms fx-83ms fx-85ms fx-270ms fx-300ms fx-350ms

TÉCNICAS DE CAD PARA ENGENHARIA CIVIL AULA Visualização do Sistema de Coordenadas Corrente

Manual de Montagem REVISÃO

"NOVO MALOTE ELETRÕNICO" Versão Windows

TUTORIAL Noções básicas de PowerPoint 2007

3.4 Movimento ao longo de uma curva no espaço (terça parte)

Desenho de Segmentos de Recta

CONTADOR DIGITAL PARA ESCALA LINEAR

Imagem e Gráficos. vetorial ou raster?

Notas de Aula AutoCad Prof. Sérgio Viana

LUZES NO KERKYTHEA. Luca Picciau tridem.altervista.org. Guia rápido para gerenciar as luzes Kerkythea eco 2008 Atualização em outubro de 2010

Rotação e Interpolação

Introdução À Astronomia e Astrofísica 2010

1º PASSO: CRIE NO SEU COMPUTADOR UMA PASTA PARA O SEU PROJETO 2º PASSO: CONHEÇA O MOVIE MAKER

Competição observacional prova do céu. Instruções. 1. Há 2 questões, cada uma valendo 25 pontos. Você tem 80 minutos para resolvê-las, dos quais :

II Cálculo Integral em R n

TRABALHO PRÁTICO Nro. 02 (Atualizado em 29/10/2008)

Nota de Aplicação IHM 004

Autor: Tiago Lone Nível: Básico Criação: 19/12/2005 Última versão: 18/12/2006. PdP. Pesquisa e Desenvolvimento de Produtos

Superintendência Regional de Ensino de Ubá - MG Núcleo de Tecnologia Educacional NTE/Ubá. LibreOffice Impress Editor de Apresentação

I. Cálculo Diferencial em R n

1)Faça a representação gráfica das seguintes funções do primeiro grau: a)y = - x + 3 b)f(x) = - 3x + 5 c)y = x + 2 d)y = x + 3

CADERNOS DE INFORMÁTICA Nº 1. Fundamentos de Informática I - Word Sumário

P r o g r a m a ç ã o d e C o m p u t a d o r e s 1 o S e m P r o f. A n d r é A m a r a n t e L u i z L A B 5 tag %2d while printf PE1:

Cap. 7 - Fontes de Campo Magnético

UCS. Universidade de Caxias do Sul. Centro de Ciências Exatas e Tecnologia. Departamento de Engenharia Mecânica

Curvas em coordenadas polares

Tecnologias PowerShot SX500 IS e PowerShot SX160 IS

Exercícios Resolvidos Integrais de Linha. Teorema de Green

2 Texturas com Relevo e Equações de Pré Warping

Exemplos de Programas para Tratamento de Ficheiros DXF. João Manuel R. S. Tavares Joaquim Oliveira Fonseca

TS Display Gráfico Serial

Exercícios Complementares 5.2

MATEMÁTICA. y Q. (a,b)

Como Fazer um Vídeo no Windows Live Movie Maker

Operações Geométricas com Imagens

Cada questão deve receber uma nota entre 0 (menor nota) e 10 (maior nota). Questões podem ter mais de uma resposta A prova do seu aluno deve receber

LABORG. Parte 5 Projeto de um circuito digital de média complexidade Parte 2. Fernando Gehm Moraes Matheus Trevisan

e-nota NF-e (Nota Fiscal eletrônica)

OFICINA DE POWER POINT

Nesta aula serão apresentados alguns comandos de condição, repetição e gráficos.

Realidade Virtual. Márcio Serolli Pinho Faculdade de Informática da PUCRS. Grupo de Realidade Virtual

Desenvolvimento de Jogos 2D. Gutenberg Neto

DEFIJI Semestre :07:19 1 INTRODUÇÃO

1/5. a. ( ) Austrália b. ( ) Brasil c. ( ) Inglaterra d. ( ) Japão e. ( ) México

4 - Layout de Mapas no QGIS 2.0

Apostila Fastseller. Manual de Treinamento FastSeller Telefone Suporte Helpdesk Ano: Versão: 1.1 1

MATERIAL DE APRESENTAÇÃO DO SCRATCH

Determinação da distância à Pequena Nuvem de Magalhães pela observação de uma estrela cefeida

Desafio: Robô comandado por Laser Tracker

Tutorial SCRATCH Blocos: Rotações: Bandeira verde:

GNU Image Manipulation Program, mais conhecido pelo acrônimo GIMP.

fabiloyola.com.br _ Apostila de Instalações Audiovisuais com Video Mapping _mapeamento de esculturas, objetos, cenários _ imagens ilustrativas

Forças Gravitacionais Diferenciais e Sistema Solar

ESTEREOSCOPIA INTRODUÇÃO. Conversão de um par de imagens (a)-(b) em um mapa de profundidade (c)

Flying Circus Documentation

Manual de instruções Controlador RGB DMX CRGB-V1

Aviso. Para evitar risco de incêndio ou choque elétrico, não exponha este PRODUTO à chuva ou à umidade.

Otimização de Funções de Duas Variáveis

Mais configuração OptraImage

Para converter uma razão de potência em decibel, encontre o logaritmo de base 10 para a razão de potência; e depois multiplique o valor por 10.

MANUAL ARRECADAWEB. Versão 1.0

Módulo Interno AL-VP 310 SÉRIE 3000 Importado e Distribuído por: R.R Sistemas Ltda. CNPJ: /

Computação Gráfica. 5385: Licenciatura em Engenharia Informática. Cap. 3 Janelas e Visores. Janelas e Visores

COMO PROGRAMAR SEU TIME

INTRODUÇÃO À TRIDIMENSIONALIDADE Step by step Maja`s House

utilizando o software geogebra no ensino de certos conteúdos matemáticos

Tutorial de desenvolvimento: Mario

PROPOSTA COMERCIAL PORTAL UTILITÀ ONLINE

10. Acessando o Banco de Dados através do Visual Basic

Top Guia In.Fra: Perguntas para fazer ao seu fornecedor de CFTV

Apostila de Física 39 Lentes Esféricas

Actividade 1 Uma direcção, dois sentidos...

Aula 9 Plano tangente, diferencial e gradiente

Programação Orientada a Objetos: Lista de exercícios #1. Bruno Góis Mateus

2º Exame Computação Gráfica

Transcrição:

Ferramentas de Desenvolvimento Rápido de Jogos 3D [DarkBasicPro] Prof. Osório Pag.: 1 - UNIVERSIDADE VALE RIO S SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS GRADUAÇÃO TECNOLÓGICA GT JEDi CURSO DE DESENVOLVIMENTO DE JOGOS E ENTRETENIMENTO DIGITAL Projeto de Jogos Ferramentas de Desenvolvimento Rápido de Jogos 3D RAD3D - DarkBasicPro Disciplina: Desenv. Rápido de Jogos 3D Professor responsável: Fernando Santos Osório Semestre: 2006/2 E-mail: fosorio@ unisinos.br Web: http://inf.unisinos.br/~osorio/jogos-gt.html Horário: 34/54 [34-6B302, 54-6L121 Lab. de Prog.] TRANSFORMAÇÕES 2D e 3D Transformações Básicas em 2D: 1. Translação: Posição + Deslocamento Coordenada inicial do objeto 2D: X#, Y# Coordenada do objeto 2D Transladado: NovoX#, NovoY# Translação = deslocamento em X e Y: DX#, DY# NovoX# = X# + DX# NovoY# = Y# + DY# 2. Escala: Alterar o tamanho de um objeto, significa alterar seus componentes Coordenada inicial do Ponto de Referência 2D: X#, Y# Coordenada do Ponto 2D após Escalamento: NovoX#, NovoY# Fator de escala: SX#, SY# (escala no eixo X e no eixo Y) NovoX# = X# * SX# NovoY# = Y# * SY# 3. Rotação: Posição + Ângulo de Rotação (em relação a um centro e com um determinado raio) Coordenada inicial do objeto 2D: X#, Y# Coordenada do objeto 2D Rotacionado: NovoX#, NovoY# Centro da rotação (pivot): CX#, CY# Raio de rotação: Raio# Ângulo de Rotação: Ang# Rotação sobre a origem (0,0) no círculo unitário (raio 1.0) NovoX# = X# * Cos(Ang#) - Y# * Sin(Ang#) NovoY# = X# * Sin(Ang#) + Y# * Cos(Ang#) Usualmente esta operação é seguida de um ajuste de escala (raio) e de translação (centro) PtX# = CX# + (NovoX# * Raio#) PtY# = CY# + (NovoY# * Raio#)

Ferramentas de Desenvolvimento Rápido de Jogos 3D [DarkBasicPro] Prof. Osório Pag.: 2 Exemplo de Código: REM ***** Código Fonte DarkBasicPro ***** REM UNISINOS - Curso GT-JEDi REM Autor: Fernando Osório - DATA: Agosto/2005 [Código completo disponível na Internet] Rem Inicializa o modo gráfico em 800x600 com 32 bits/pixel (opcional) SET DISPLAY MODE 800,600,32 ImgAbelha=1 load image "abelha.png", ImgAbelha cls paste image ImgAbelha,0,0,1 get image ImgAbelha,1,1,59,65 Rem Posicao no círculo de raio 1.0 (usada na rotação) px_ini#=1.0 py_ini#=0.0 Rem Tamanho do raio usado para alterar a escala da circunferência de raio 1.0 Rem Com uma escala de Raio#=100.0 obtemos uma circunferência de raio 100.0 raio#=100.0 Rem Ângulo inicial da rotação angulo#=0.0 Rem Translação a ser realizada do centro da circunferência de raio unitário (1.0) cx#=400 cy#=300 Rem Deslocamento (coordenada obtida por rotação) aplicado junto ao centro da circunferência dx#=0 dy#=0 cls Rem Calculo da rotação em sentido horário. Lembre-se: o Eixo Y cresce para baixo na tela... dx#=(px_ini#*cos(angulo#)-py_ini#*sin(angulo#) )*raio# dy#=(px_ini#*sin(angulo#)+py_ini#*cos(angulo#) )*raio# Rem A rotação se considerarmos um eixo Y crescendo para cima será no sentido anti-horário Cls sprite ImgAbelha, cx#+dx#, cy#+dy#, ImgAbelha Rem Invertendo o Eixo Y Rem sprite ImgAbelha, cx#+dx#, 600-(cy#+dy#), ImgAbelha show sprite ImgAbelha angulo#=angulo#+1 if escapekey() then END END

Ferramentas de Desenvolvimento Rápido de Jogos 3D [DarkBasicPro] Prof. Osório Pag.: 3 Transformações Básicas em 3D: 1. Translação: Posição + Deslocamento Objeto a ser transladado: Nobj (número que identifica o objeto) Posição inicial do objeto no espaço 3D: X#, Y#, Z# Deslocamento aplicado ao objeto: DX#, DY#, DZ# Posição do objeto após translação: NovoX#, NovoY#, NovoZ# X# = Object Position X(Nobj) Y# = Object Position Y(Nobj) Z# = Object Position Z(Nobj) NovoX# = X# + DX# NovoY# = Y# + DY# NovoZ# = Z# + DZ# Position Object Nobj, NovoX#, NovoY#, NovoZ# Funções usadas para operações de Translação do DarkBasicPro: Position Objet Nobj, X, Y, Z (posicionamento absoluto, não altera orientação) Move Object Nobj, Deslocamento (move na direção corrente, para onde está orientado) Move Object Up Move Object Down Nobj, Deslocamento (move relativo a posição e orientação atual!) Move Object Left Move Object Right 2. Escala: Alterar o tamanho de um objeto Objeto a ser transladado: Nobj (número que identifica o objeto) Fator de escala a ser aplicado no objeto 3D: SX#, SY#, SZ# Scale Object Nobj, SX#, SY#, SZ# 3. Rotação: Posição + Centro + Raio + Ângulo de Rotação Objeto a ser rotacionado: Nobj (número que identifica o objeto) Posição inicial do objeto no espaço 3D: X#, Y#, Z# (Círculo Unitário: 0.0 <= Coord <= 1.0) Posição final do objeto após realizada a rotação: NovoX#, NovoY#, NovoZ# Centro da rotação (pivot): CX#, CY#, CZ# Raio de rotação: Raio# Ângulo de Rotação: AngX#, AngY#, AngZ# (inclui translação e escala) ROTAÇÃO NO PLANO XY - SOBRE O EIXO Z NovoX# = CX# + (X# * Cos(AngZ#) - Y# * Sin(AngZ#)) * Raio# NovoY# = CY# + (X# * Sin(AngZ#) + Y# * Cos(AngZ#)) * Raio# NovoZ# = CZ# + Z# * Raio# (não sofre alteração) ROTAÇÃO NO PLANO XZ - SOBRE O EIXO Y NovoX# = CX# + (X# * Cos(AngY#) - Z# * Sin(AngY#)) * Raio# NovoY# = CY# + Y# * Raio# (não sofre alteração) NovoZ# = CZ# + (X# * Sin(AngY#) + Z# * Cos(AngY#)) * Raio# ROTAÇÃO NO PLANO YZ - SOBRE O EIXO X NovoX# = CX# + X# * Raio# (não sofre alteração) NovoY# = CY# + (Y# * Cos(AngX#) - Z# * Sin(AngX#)) * Raio# NovoZ# = CZ# + (Y# * Sin(AngX#) + Z# * Cos(AngX#)) * Raio#

Ferramentas de Desenvolvimento Rápido de Jogos 3D [DarkBasicPro] Prof. Osório Pag.: 4 Caso a coordenada inicial (X#,Y#,Z#) não seja tão importante, ou seja, a trajetória é circular ao redor de um objeto, onde não importa o ponto da trajetória onde este começa... então podemos assumir as coordenadas de X#, Y# e Z# iniciais como sendo 1.0 (lembre-se estamos considerando um círculo de raio 1.0), e as equações ficam simplificadas assim: ROTAÇÃO NO PLANO XY - SOBRE O EIXO Z NovoX# = CX# + (Cos(AngZ#) - Sin(AngZ#)) * Raio# NovoY# = CY# + (Sin(AngZ#) + Cos(AngZ#)) * Raio# NovoZ# = CZ# + Raio# (não sofre alteração não precisaria ser atualizado) ROTAÇÃO NO PLANO XZ - SOBRE O EIXO Y NovoX# = CX# + (Cos(AngY#) - Sin(AngY#)) * Raio# NovoY# = CY# + Raio# (não sofre alteração) NovoZ# = CZ# + (Sin(AngY#) + Cos(AngY#)) * Raio# ROTAÇÃO NO PLANO YZ - SOBRE O EIXO X NovoX# = CX# + Raio# (não sofre alteração) NovoY# = CY# + (Cos(AngX#) - Sin(AngX#)) * Raio# NovoZ# = CZ# + (Sin(AngX#) + Cos(AngX#))* Raio# Funções usadas para operações de Translação do DarkBasicPro: Rotação em relação a um pivot: (ver equações acima) Object Position + Sin/Cos Rx,Ry,Rz + Position Object Rotação ao redor do centro do próprio objeto: XRotate Object Nobj, Ângulo# YRotate Object Nobj, Ângulo# ZRotate Object Nobj, Ângulo# Rotação composta nos 3 eixos: Rotate Object Nobj, AngX#, AngY#, AngZ# Para obter os ângulos atuais de rotação: AngX# = Object Angle X(obj) AngY# = Object Angle Y(obj) AngZ# = Object Angle Z(obj) Alterando a rotação do objeto através da definição de sua orientação: Position Object Nobj, X#, Y#, Z# Point Object Nobj, X1#, Y1#, Z1# Outras rotações... Rotações relativas ao ângulo atual (O efeito final é o mesmo de usar o XRotate, YRotate, ZRotate) Turn Object Left Nobj, Valor# Turn Object Right Nobj, Valor# Pitch Object Up Nobj, Valor# Pitch Object Down Nobj, Valor# Roll Object Left Nobj, Valor# Roll Object Right Nobj, Valor# Outras funções importantes: Wrapvalue => Evita que o ângulo saia fora da faixa de 0 a 360 graus Uso: valor# = wrapvalue(valor#)

Ferramentas de Desenvolvimento Rápido de Jogos 3D [DarkBasicPro] Prof. Osório Pag.: 5 Exemplo de programa usando as funções de rotação: YROTATE Load Object "carro.x",1 Autocam off Make Matrix 1,1000,1000,50,50 Position Matrix 1,-500,0,-500 Control camera using arrowkeys 0,5.0,2.0 IF Inkey$()="Y" THEN YRotate Object 1, Object Angle Y(1)+0.5 IF Inkey$()="y" THEN YRotate Object 1, Object angle Y(1)-0.5 Exemplo de programa usando as funções de rotação: TURN Load Object "carro.x",1 Autocam off Make Matrix 1,1000,1000,50,50 Position Matrix 1,-500,0,-500 Control camera using arrowkeys 0,5.0,2.0 IF Inkey$()="Y" THEN Turn Object Left 1, 0.5 IF Inkey$()="y" THEN Turn Object Right 1, 0.5 Exemplo de programa fazendo um planeta orbitar ao redor de outro: SIN/COS Terra=1 : Lua=2 : Sol=3 Make object sphere Terra, 100 Make object sphere Lua, 20 Make object sphere Sol, 100 : Color object Terra, rgb(0,0,255) : Color object Lua, rgb(200,200,200) : Color object Sol, rgb(244,122,0) Rem Centro de Rotação (Terra), Raio e Ângulo Inicial Tx#= 300 : Ty#= 0 : Tz#= 0 Position Object Terra,Tx#,Ty#,Tz# Raio#=100 : AngY#=0 control camera using arrowkeys 0,5.0,2.0 Rem Rotacao no PLANO XZ - Ao redor do EIXO Y if Spacekey() AngY#=AngY#+1 NovoX# = TX# + (Cos(AngY#)-Sin(AngY#))*Raio# NovoZ# = TZ# + (Sin(AngY#)+Cos(AngY#))*Raio# position object Lua,NovoX#,0.0,NovoZ# Endif

Ferramentas de Desenvolvimento Rápido de Jogos 3D [DarkBasicPro] Prof. Osório Pag.: 6 Exercício Implemente um SCREENSAVER! Use Translações, Escalas e/ou Rotações para animar a cena, onde você pode deslocar tanto os objetos da cena como também a câmera (os comandos de posição e rotação também podem ser aplicados na câmera. Bom trabalho! Exemplos... Cubo de Cubos Planetas ` Outros... Aquário, Relógio 3D, Fotos de Jogos Famosos ou Pessoas, Naves, Temático (inspirado em filmes, jogos, cenas de terror), Efeitos especiais com objetos, formas, luzes, transparências e cores. Use sua imaginação!