Defilada - przykład wykorzystujący animowane modele Copperlicht. Andrzej P.Urbański Politechnika Poznańska



Podobne dokumenty
Przykład integracji kalkulatora mbank RATY na platformie IAI

LIVE Gra w życie. LIVE w JavaScript krok po kroku. ANIMACJA Rozpoczynamy od podstawowego schematu stosowanego w animacji

Laboratorium 1: Szablon strony w HTML5

Rys.2.1. Drzewo modelu DOM [1]

Dokument hipertekstowy

Dokumentacja Skryptu Mapy ver.1.1

DOM i JavaScript DOM W3C

SterBox. Przygotowanie Strony Użytkownika

Programowanie gier 3D w HTML5. Andrzej P.Urbański Politechnika Poznańska

How To? Konfiguracja podglądu strumienia z kamer IP ACTi

Zdarzenia Zdarzenia onload i onunload

Załącznik nr 2 do uchwały Nr XXII/ 141 /2013 Rady Gminy Bojszowy z dnia r. <?xml version="1.0" encoding="utf-8"?>

Zajęcia 4 - Wprowadzenie do Javascript

Formularze Pobierają dane od użytkownika strony i wysyłają je do przetworzenia na serwerze (gdzie potrzebne są skrypty,któredaneprzetworzą najczęściej

Danuta ROZPŁOCH-NOWAKOWSKA Strona Moduł 4. Przykład 1. Przykład 2. HTML 4.01 Transitional).

Ten skrypt powinien zająć 2-3 zajęcia. Trzeba go oddać na trzecim labie.

CSS. Kaskadowe Arkusze Stylów

Układy witryn internetowych

Wykład 03 JavaScript. Michał Drabik

Programowanie w Internecie

- dodaj obiekt tekstowy: /** Maciej */ Stage { title : "First JavaFX App" scene: Scene { width: 300 height: 300 content: [ ] } }

Aplikacje WWW - laboratorium

DOM (Document Object Model)

Wybrane działy Informatyki Stosowanej

Zajęcia 10 obsługa formularzy w PHP

plansoft.org Zmiany w Plansoft.org

Być może jesteś doświadczonym programistą, biegle programujesz w Javie,

Bazy Danych i Usługi Sieciowe

Warszawa, dnia 4 marca 2015 r. Poz UCHWAŁA NR 72/2015 RADY MIEJSKIEJ W RADOMIU. z dnia 23 lutego 2015 r.

Krótki kurs JavaScript

Ilość cyfr liczby naturalnej

*Kaspersky Internet Security 2016PL Box 1Desktop 1. Model : *Kaspersky Internet Security 2016PL Box 1Desktop 1. ram sp. j.

ICT MP M D P U wykład 1

CSS - layout strony internetowej

PERFORMANCE W JOOMLA! JAK SPRAWIĆ ABY STRONA DZIAŁAŁA SZYBCIEJ?


Wybrane działy Informatyki Stosowanej

Ćwiczenie 1 Galeria zdjęć

Ćwiczenia laboratoryjne nr 8 Podstawy języka XML.

Poprzednia wersja HTML, HTML 4.01, pochodzi z Sieć od tego czasu zmieniła się znacznie.

Zaawansowane aplikacje internetowe

Michał Bielecki, KNI 'BIOS'

Tworzenie stron internetowych w kodzie HTML Cz 5

Język programowania PASCAL

Ćwiczenie 9 - CSS i wstawianie CSS

Aplikacje WWW - laboratorium

Sieciowe Technologie Mobilne. Laboratorium 4

CZYM JEST JAVASCRIPT?

Specyfikacja reklamy tekstowej i bannerowej na portalu GoldenLine.pl

Krok 1: Stylizowanie plakatu

2. Prezentacja wizualna

I. Wstawianie rysunków

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Tomasz Grześ. Systemy zarządzania treścią, cz. II

TECHNOLOGIE INTERNETOWE WYKŁAD 6. JavaScript Funkcje i obiekty

Nazwa implementacji: CSS i box model. Autor: Opis implementacji: Poznajemy podstawy CSS oraz dowiadujemy się o rozmieszczaniu elementów na stronie.

Czym jest JavaScript? 1

JAVAScript w dokumentach HTML (2)

Multimedia i interfejsy. Ćwiczenie 5 HTML5

Wyszukiwanie największej spośród czterech liczb. Przykładowe rozwiązanie

Norton Sec.3.0 STD PL CARD 1U 1Dvc 1Y Model : Norton Sec.3.0 STD PL CARD 1U 1Dvc 1Y ram sp. j.

Funkcje i instrukcje języka JavaScript

Przegląd technologii

Dzięki arkuszom zewnętrznym uzyskujemy centralne sterowanie wyglądem serwisu. Zewnętrzny arkusz stylów to plik tekstowy z rozszerzeniem css.

D:\Program Files\Temp\Deklaracja o wysokości opłaty za gospodarowanie odpadami komunalnymi-3.xml 6 maja :16

Grafika PHP dla początkujących

Projektowanie aplikacji internetowych. CSS w akcji

Wysyłanie pliku na serwer. Plik na serwerze.

Dokumentacja WebMaster ver 1.0

System operacyjny Linux

Sass Rewolucja w CSS +

Tworzenie Stron Internetowych. odcinek 10

Programowanie w Sieci Internet jquery - nowy aromat kawy angular.js. Kraków, 24 października 2014 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Komentarze w PHP (niewykonywane fragmenty tekstowe, będące informacją dla programisty)

Masz pomysł na lepszy wygląd?

Programowanie Multimediów. Programowanie Multimediów JAVA. wprowadzenie do programowania (3/3) [1]

PRÓBNY EGZAMIN POTWIERDZAJĄCY KWALIFIKACJE W ZAWODZIE CZĘŚĆ PISEMNA

Specyfikacja techniczna dot. mailingów HTML

za pomocą: definiujemy:

Wprowadzenie do Internetu zajęcia 4

prowadzący dr ADRIAN HORZYK /~horzyk Konsultacje paw. D-13/325D

Sierpień 2015 rozwiązanie plik: index.htlm

Spis treści. Wprowadzenie 11 Rozdział 1. Pierwsze spotkanie z JavaScriptem 15. Spis treści

JAVAScript tablice, przekazanie danych do funkcji, obiekty Date i window

Znaczniki języka HTML

Podstawy JavaScript ćwiczenia

Specyfikacja standardów technicznych

Informatyka MPDI 3 semestr

Aplikacje WWW - laboratorium

Opis programu. Obiekt canvas w HTML szerokość i wysokość 600 pikseli. Wygląd dolnej części sterownia armaty grawitacyjnej

HTML. HTML(ang. HyperTextMarkupLanguage, pol. hipertekstowy język znaczników) język wykorzystywany do tworzenia stron internetowych

Alfabetyczna lista stylów

Przy dużej wielkości głębokości uzyskamy wrażenie nieskończoności: Dla głębokości zerowej uzyskamy tekst płaski:

5-6. Struktura dokumentu html. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów

KURSY PROGRAMOWANIA DLA DZIECI

Prezentacja dokumentów XML

Zajęcia nr 15 JavaScript wprowadzenie do JavaScript

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

Przekształcenie danych przestrzennych w interaktywne mapy dostępne na stronach www (WARSZTATY, poziom zaawansowany)

Transkrypt:

Defilada - przykład wykorzystujący animowane modele Copperlicht Andrzej P.Urbański Politechnika Poznańska

Czego potrzebujemy? Animowane postacie potrafiące wykonywać różne ruchy cząstkowe np.: chodzić, biegać, siadać, stać itp. Kod programu tworzony w języku Java Script, który zorganizuje całą dynamikę gry i będzie wywoływał metody odpowiednio poruszające postaciami

Co to jest Copperlicht? Pakiet dla Windows służący do publikowania animacji/gier m.in. jako kod HTML5/webGL

Co jest dla nas ciekawe w copperlicht? Posiada gotowe modele graficzno/ programowe postaci ludzkich potrafiących: Stand Walk Run Pistol_Shot attack_walk Idle_a aim

Jak działa nasz przykład? Cz.1 1. Widzimy jednego żołnierza niebieskich i jednego czerwonych beretów 2. Klikamy w przycisk GENERUJ i program losuje dwie liczby 3. Program obrazuje liczby powielając odpowiednio żołnierzy niebieskich i czerwonych beretów 4. Wpisujemy liczbę w odpowiednie okienko

Jak działa nasz przykład? Cz.2 5. Program ustawia żołnierzy w szeregach po tylu żołnierzy ilu podaliśmy oddzielnie dla każdego oddziału 6. Jeśli chociażby w jednym oddziale będą niepełne rzędy to żołnierze będą stać w ciszy 7. W przeciwnym razie żołnierze zaczną maszerować w rytm tematycznej piosenki

Jak przebiegała praca? 1. Przygotowanie sceny z widokiem horyzontu i dwoma żołnierzami z zestawu w CopperCube3 2. Pokolorowanie hełmu jednemu żołnierzowi na niebiesko, a drugiemu na czerwono bezpośrednio na plikach graficznych z teksturami 3. Rozbudowa kodu w JavaScript o tworzenie formularza na boku grafiki oraz funkcje go obsługujące i sterujące żołnierzami bezpośrednio na plikach tekstowych

Nagłówek strony HTML <html><head><meta content="text/html; charset=utf8" http-equiv="content- Type"> <script src="copperlichtdata/copperlicht.js" type="text/javascript"> </script> </head> <body style="width: 100% onload="document.getelementbyid('3darea'). width=window.innerwidth; document.getelementbyid('3darea').height=window.innerheight;"> <center><div style="width: 100%; margin: auto; position: relative; font-size: 9pt; color: #777777;"> <canvas id="3darea" height="600" style="background-color: #000000" width="800"></canvas> <div id="helptext" style="display: block; color: #ffffff; padding: 5px; position: absolute; left: 20px; top: 420px; background-color: #000000; height: 120px; width: 300px; border-radius: 5px; border: 1px solid #777777; opacity: 0.7;">

Canvas dla animacji <center><div style="width: 100%; margin: auto; position: relative; font-size: 9pt; color: #777777;"> <canvas id="3darea" height="600" style="background-color: #000000" width="800"></canvas> <div id="helptext" style="display: block; color: #ffffff; padding: 5px; position: absolute; left: 20px; top: 420px; background-color: #000000; height: 120px; width: 300px; border-radius: 5px; border: 1px solid #777777; opacity: 0.7;">

Formularz wyświetlania i wprowadzania danych liczbowych <form action="" method="get" name="myform"> <input style="width: 70px" name="button" onclick="restart()" type="button" value="generuj"> kolejne zadanie z liczbą niebieskich hełmów: <input style="width: 30px" id="numberbox1" disabled="disabled" type="text" value=""> i czerwonych hełmów: <input style="width: 30px" id="numberbox2" disabled="disabled" type="text" value="">. a następnie wpisz podzielnik liczb niebieskich i czerwonych hełmów w oddziałach: <input style="width: 30px" id="inputbox" type="text" value=""> zatwierdzając przyciskiem: <input style="width: 70px" name="button" onclick="check()" type="button" value="zatwierdź"><br />Możesz użyć kursorów oraz myszki aby poruszać kamerą.<br> <a href="<?php echo$_server['http_referer']?>" style="color: #ffffff;">powrót do strony głównej</a> </form> </div></div></center>

Obsługa podkładu muzycznego <audio id="audio" hidden="hidden" controls="controls"> <source src="defilada.mp3" type="audio/mp3" /> Twoja przeglądarka nie obsługuje znacznika audio. </audio> <script type="text/javascript"> var audioelement = document.getelementbyid('audio'); function Start() { audioelement.play(); function Stop() { audioelement.pause();

Inicjalizacja i wczytywanie var output1 = document.getelementbyid('numberbox1'); var output2 = document.getelementbyid('numberbox2'); var input = document.getelementbyid('inputbox'); output1.value = ""; output2.value = ""; input.value = ""; var squad1 = new Array(); var squad2 = new Array(); var firstsquadcount; var secondsquadcount; var engine = startcopperlichtfromfile('3darea', 'copperlichtdata/animation.ccbjs'); document.onkeyup = function(event){ var scene = engine.getscene(); if (!scene) return; engine.handlekeyup(event); ;

Losowanie ilu żołnierzy w oddziałach function restart() { Stop(); input.value = ""; do{ var factor = Math.floor(Math.random() * 8 + 2); //2<=factor<=10 firstsquadcount = factor * Math.floor(Math.random() * (25/factor) + 2); //4<=first<=14 secondsquadcount = firstsquadcount; while(secondsquadcount == firstsquadcount) secondsquadcount = factor * Math.floor(Math.random() * (25/factor) + 2); while(nwd(firstsquadcount,secondsquadcount)>9);//nwd<=9 output1.value = firstsquadcount.tostring(); output2.value = secondsquadcount.tostring(); setsquads();

Czyszczenie po poprzednim function setsquads(){ var scene = engine.getscene(); if (!scene) return; var soldier1 = scene.getscenenodefromname('soldier1');//wydobywanie wskaźników do żołnierzy var soldier2 = scene.getscenenodefromname('soldier2');//wprost do wnętrza sceny soldier1.pos.x = -2.5; //Ustawianie żołnierzy na pozycjach wyjściowych soldier2.pos.x = -50.5; soldier1.pos.z = 50; soldier2.pos.z = 50; soldier1.setanimation('stand'); soldier2.setanimation('stand'); for (i=1;i<squad1.length;i++) scene.getrootscenenode().removechild(squad1[i]); for (i=1;i<squad2.length;i++) scene.getrootscenenode().removechild(squad2[i]);

Klonuj i ustaw w szeregach squad1[0]=soldier1; for (i=1;i<firstsquadcount;i++) { squad1[i] = soldier1.createclone(scene.getrootscenenode()); squad1[i].pos.z -= (i * 20); squad2[0]=soldier2; for (i=1;i<secondsquadcount;i++) { squad2[i] = soldier2.createclone(scene.getrootscenenode()); squad2[i].pos.z -= (i * 20); </script></body></html>

Ustawia żołnierzy do defilady function setsoldiers(a,squadcount,squadno, zf){//szereg,ilość żołnieży w oddziale,nr.oddziału,rzędów poprzedz. var b = Math.ceil(SquadCount / a);//ilość rzędów var i; var j; for (i = 0;i<b;i++){//po wszystkich rzędach for (j = 0; j < a; j++){//po wszystkich żołnierzach w szeregu var x = -20-15 * a + j * 30; var z = 50-40 * i - zf; var idx = (i * a + j); if (idx >= SquadCount) return (40 * i + 40);//żołnierze skończyli się przed końcem szeregu switch(squadno){ case 1:squad1[idx].Pos.X = x;//niebieskie hełmy squad1[idx].pos.z = z; break; case 2:squad2[idx].Pos.X = x;//czerwone hełmy squad2[idx].pos.z = z; break; return (40 * b);//żołnierze kończą się z końcem szeregu

Ustawia obydwa do defilady function check(){ var scene = engine.getscene(); if (!scene) return; var soldier1 = scene.getscenenodefromname('soldier1'); var soldier2 = scene.getscenenodefromname('soldier2'); var szereg = input.value; if(szereg=="")return; var zf=setsoldiers(szereg,firstsquadcount,1,0); setsoldiers(szereg,secondsquadcount,2,zf);

Jeśli jest podzielnikiem to maszerują if((firstsquadcount % input.value == 0)&&(secondSquadCount % input.value == 0)){ Start(); for (i=1;i<firstsquadcount;i++) squad1[i].setanimation('walk'); soldier1.setanimation('walk'); for (i=1;i<secondsquadcount;i++) squad2[i].setanimation('walk'); soldier2.setanimation('walk');

Jeśli nie jest podzielnikiem to stoją else { Stop(); for (i=1;i<firstsquadcount;i++) squad1[i].setanimation('stand'); soldier1.setanimation('stand'); for (i=1;i<secondsquadcount;i++) squad2[i].setanimation('stand'); soldier2.setanimation('stand');

Największy wspólny podzielnik function NWD(a,b) { while (a!= b) { if (a > b){ a = a - b else{ b = b - a return a

Uwagi końcowe CopperCube3/Copperlicht W zasadzie jest pakietem do robienia prostych animacji/gier bez programowania W przykładzie wykorzystano to oprogramowanie wchodząc kuchennymi drzwiami Nie jest zgodny z żadnym standardem modeli 3D