Skip to content

Latest commit

 

History

History
280 lines (257 loc) · 11.2 KB

todo_chuchu.org

File metadata and controls

280 lines (257 loc) · 11.2 KB

Current => matrix2020 : “FOV mais…” ou gl_text info cursor

TODO gl_overlay pour écrire le texte de ce qui est sous le curseur

[5/7] GN2020

[2/6] Autre agent

avec orientation

FOV mais dans seulement 2/X direction (ex devant+droite)

Affichage textuel avec flèches ?

déplacement automatique => règles

tir/action si assez près ou ligne de vue

[2/3] pouvoir cliquer sur agent pour info

click => environment coordinate

get info on agent/hacker if any

gl_text les info

[0/2] découvrir le monde

mur (immuable) sont gardés sans fade

dernière position des agents, faded

[3/4] display info, FPS

FPS pourrait être aussi affiché dans Anttweak

déplacer un curseur => Input ds Chuchu

curseur actif

curseur avec épaisseur => ligne line width

pointer avec souris => Position de la souris

lire monde txt

afficher monde txt

faire texture hachure et point

afficher monde GL avec textures

[2/2] GLFov as dynamical VBO

use a std::vector to store square_vts ?

implement dynamical update src/matrix2020/gl_fovhamming.hpp

[4/6] New Shaders

  • test-020-window : cube en rotation
  • test-021-cells : geom pour tracer cell => NON, FAIL

init of glm::mat ??

[/] cube with MVP

make slow rotation => model

new trackball

affichage fps

<<affichage fps>> est un lien/ancre préféré à ‘affichage fps’

billboard ??

line width

2D cell viewer with geometry shader

[1/1] Comprendre

sans MVP, tracer axes avec geom

faire varier (x,y,z), puis w

[5/7] Boids

[0/2] adding Physics

Orientation of BoidBody is not aligned to speed

change color according to speed ?

Changer taille = 1 de DIAMETRE

Ajouter couleur

Ajoute arrow orientation*

Ajouter couleur arrow

Tester deux boucle vs boucle (disk,arrow)

[1/1] Position de la souris => position dans le modèle

Relire le calcul matriciel des projections 3D opengl

[0/2] steering seek vers le point cliqué

afficher un point là où on a cliqué

steering

[2/3] Camera <2017-07-26 mer.>

[1/1] ship to GL3DObject

add shaders to GL3DEngine

make ship move

[0/2] attach camera

[0/1] behind ship

Pb when ship rotates

in cockpit

[3/6] Physics <2017-07-19 Wed>

[3/3] Base transformation avec rotation

glm::rotate( q, vec3)

glm::inverse( q )

Show in simu

Integration : apply speed_n to compute posn+1 before computing speedn+1

Add drag force with given coefficient.

3D Forces

[1/1] Ship Controlx

Ensure that acceleration is only applied once for every physics step

[1/3] 3D Rotation

apply (slerp) initial rotation speed

Express Inertia Momentum of the ship in local base.

Why 3x3 better thah Quat for rotations ? => read article

Quat to 3x3 rotation matrix

from torque, derive new angular velocity

from ang_vel 3x3 => quaternion

apply (multply) to update rotation

Coordonnées uniforme (4D, avec 1.0 en 4 si c’est un point ?)

[5/7] Simu <2016-12-04 Sun>

shaders

  • tactiship/gl_3dvect.hpp : line3d.v.glsl, line.f.glsl
  • tactiship/gl_3dship.hpp : line_tri_xyz_rgb_fade.v.glsl, line_tri_xyz_rgb_fade.f.glsl
  • tactiship/trajectory.hpp : line_tri_xyz_rgb_fade.v.glsl, line_tri_xyz_rgb_fade.f.glsl
  • gl_engine.
    • gl_texture : sprite
    • gl_texture_fade : sprite_fade

gl_text en 3D avec mvp matrix…

frame avec x,y,z

horizontal floor with grid

discs

vect vitesse

vecteur vitesse angulaire ?

lien entre 2 pts

click pour avoir info

[6/6] Chuchu Model

[2/2] leaving Cell

_arrow => prend dir de _arrow

si mur

nouvelle direction avec rotation horaire tant que mur existe

enter cell with rocket

Toric world

Construire monde et Cells à partir d’une description serialized

En continuant ce qui est fait pour -l_walls

Source avec période réfractaire

Décalage Chuchu

Quand on ajoute un flèche, certains Chuchu déjà engagés dans la sortie ne prennent plus le trajet qui va de centre de case en centre de case.

flag : dir_set ?

[5/10] Graphic

Attention, transparence pas très bien gérée (bord blanc autoure des rockets)

Enlevé DEPT_TEST je crois

3D Chuchu models => 1 texture par direction

Animation texture + coord

Rocket

le compteur d’animation doit être avec la Rocket. Mais, normalement, c’est pas dans le modèle… Quoique

  1. ajouter un update à chaque Rocket qui gère le compteur d’animation

++++2) GLRocket maintient un compteur d’animation par Rocket => essayer de lui passer en paramètre un GLSprite::render( projection, Vec2, unsigned int spriteIndex ou (row,col)) où projection peut être mutiplié par scale fonction de l’anim. En static ou en Ptr. Modèle déclence le moment d’entrée, donc de début d’animation.

[0/1] Screen size

screen03 (pvp001) 1280x752

screen01 () 1024x768

cookie 1920x1080 : 1024=>576, 1365<=768, 1280=>720, 1128<=752:1838x1080

Taille des cellule et épaisseurs de murs

[0/3] Refactor as utils class/template/other

On parle ici d’une sorte de GLSprite

  • on lui ajoute des Textures (nb_row, nb_col)
  • pre_render => choisi program; _vbo_carre_vtx
  • set_texture
  • render avec (proj, pos, row,col) ; glm::matrix, glDraw…

Voir post_render !!

UPD de test-005-gl_base et utilisation GLControlers

Refactor GLTexture pour détecter l’utilisation de ‘fade’

test lorsqu’on essaie de faire le binding

Qui est au dessus de qui ? (transparence)

Dernier tracé => en haut, Z compte pas

3D+Tex de Source

Les chuchu grossisent et “sautent” hors des sources, qui, comme les fusées, sont extrudées du sol et donc vue en perspectives.

Tex des damiers

Tex des autres fusées

Animation de la Cross (scale)

Cross qui devient pâle sur fusée ou flèches autre ??

Title Frame

largeur 512 + 128 = 640

hauteur 256 + 128 + 64 + 32 = 480

[3/3] Input

Joystick controler avec GLFW

<<<BUG>>> pose flèche hors zone ???

Maintenant qu’on a un GL_Controler, la pose de flèche alors que le cursor est hors zone => SegFault

Lien pour savoir où on a cliqué avec souris.

GL Unproject

http://en.wikibooks.org/wiki/OpenGL_Programming/Object_selection

Boost::Options et Contoler

// Parsing command line options #include <boost/program_options.hpp> namespace po = boost::program_options; // ******************************************************************* options void setup_options(int argc, char **argv) { po::options_description desc(“Options”); desc.add_options() (“help,h”, “produce help message”) (“nb_player,n”, po::value<unsigned int>(), “nb de joueur par défaut”) ;

// Options en ligne de commande po::options_description cmdline_options; cmdline_options.add(desc);

// Options qui sont ‘après’ po::positional_options_description pod; //pod.add( “data_file”, 1);

// Parse po::variables_map vm; po::store(po::command_line_parser(argc, argv). options(desc).positional(pod).run(), vm); po::notify(vm);

if (vm.count(“help”)) { std::cout << “Usage: ” << argv[0] << ” [options]” << std::endl; std::cout << desc << std::endl; exit(1); }

if (vm.count(“nb_player”)) { _nb_player = vm[“nb_player”].as<unsigned int>(); } }

>>>>>> Dans MAIN setup_options( argc, argv ); std::cout << “__SET_CONTROLER” << std::endl; app.set_controler( _nb_player );

[1/3] Son

play son 31xxx ds data

Pourquoi ca marche pas sur usukun ??

Mix

Z=A+B−AB.

2 (ou 3) streams ??

Music

music = 10-single-player-theme pour les PUZZLE

music = 02-multiplayer-theme pour JEU

effect = enter_rocket.mp3

== TactiShip == ===============

[7/8] Tactiship <2015-12-02 Wed> Merged into Simu

Reprendre un peu tout à partir de SpaceZombie et faire un afficheur de traces de vaisseaux (genre Tie SW et Navette :o) )

IMPORTANT : ne pas hésiter à s’inspirer de ChuchuRocket => même rép ?

Passer sous WAF

C++ 11

Reprendre Trackball

[2/2] Reprendre Axe 3D

un GL_Screen avec axe et flèches 3D. Comme SZ.

[1/1] Position en 3D : translation + rotation

glMath ??

[1/1] Afficher simple vaisseau

[Pk] les Z du vaisseaux ne sont pas les bons ?

[3/3] TODO Afficher vaisseau qui fait un rond autour de Oz

Afficher en plusieurs Pose

Scale du Vaisseau

Template pour différents objets => concept GLObject ??

[2/2] Afficher la trace de ce vaisseau

Sous forme d’une ligne avec, de temps à autre une silhouette “fadée”.

Ruban transparent de dessous (culling)

Ruban avec deux couleur (clair haut, sombre dessous)

https://en.wikibooks.org/wiki/GLSL_Programming/GLUT/Two-Sided_Surfaces

Rotation avec quaternions

http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-17-quaternions/

Quaternion QuatAroundX = Quaternion( Vector3(1.0,0.0,0.0), EulerAngle.x ); Quaternion QuatAroundY = Quaternion( Vector3(0.0,1.0,0.0), EulerAngle.y ); Quaternion QuatAroundZ = Quaternion( Vector3(0.0,0.0,1.0), EulerAngle.z ); Quaternion finalOrientation = QuatAroundX * QuatAroundY * QuatAroundZ;

The concept of quaternion multiplication is similar to matrix multiplication, it is neither dot nor cross product. If you want to understand the usage of quaternions, then get used to matrices and understand axis-angles, their basic concept is pretty similar to quaternions, the math is a bit more advanced, but once you understood axis-angles, then quaternions are not far away anymore.

Hamilton product => implémenté par operator*

For two elements a1 + b1i + c1j + d1k and a2 + b2i + c2j + d2k, their product, called the Hamilton product (a1 + b1i + c1j + d1k) (a2 + b2i + c2j + d2k), is determined by the products of the basis elements and the distributive law. The distributive law makes it possible to expand the product so that it is a sum of products of basis elements. This gives the following expression:

a1a2+a1b2i+a1c2j+a1d2k {}+b1a2i+b1b2i2+b1c2ij+b1d2ik {}+c1a2j+c1b2ji+c1c2j2+c1d2jk {}+d1a2k+d1b2ki+d1c2kj+d1d2k2.

Now the basis elements can be multiplied using the rules given above to get:[6]

a1a2-b1b2-c1c2-d1d2 {}+(a1b2+b1a2+c1d2-d1c2)i {}+(a1c2-b1d2+c1a2+d1b2)j {}+(a1d2+b1c2-c1b2+d1a2)k.

The product of two rotation quaternions will be equivalent to the rotation a1 + b1i + c1j + d1k followed by the rotation a2 + b2i + c2j + d2k.

Static

Dynamic

Charger Tie Fighter 3D model ??

ORG

Link [[link][display

file:rel_path::NNN or ::search words

C-c l : store link

C-c C-o : follow link

C-c C-l : edit link/insert link

C-c / t : sparse todo tree