Forum Casio - Discussions


Index du Forum » Discussions » Test perspectives 3D besoin d'un avis
MactulHors ligneMembrePoints: 390 Défis: 0 Message

Test perspectives 3D besoin d'un avis

Posté le 20/03/2019 15:00

Hello,
Si vous vous baladez régulièrement sur planète casio, vous avez put remarquer que je m'intéresse beaucoup à la 3D (d'ailleurs, vivement la sortie de windmill )
Je ne suis qu'en seconde et n'ai pas les connaissance mathématiques suffisantes à la 3D
Je me suis quand même risqué à un programme qui dessine un bloc en perspective comme si une caméra glissait devant

J'aurais besoin que l'on me dise s'il y à un intérêt exploitable à mon programme

/!\ ATTENTION /!\
pour le coef diviseur mettez dans un premier temps un nombre proche de 1 (pas moins de 0,5, pas plus de 3)


------------------------------------------------------------------------------------------------------------------------------------------------------------

- lien de téléchargement (version non automatique) -
- lien de téléchargement (version automatique) -
- lien de téléchargement (jeu) -


Fichier joint


Pages : 1, 2Suivante
DisperseurHors ligneMembrePoints: 1332 Défis: 0 Message

Citer : Posté le 20/03/2019 15:06 | #


Je suis aussi en seconde et j'ai réussit à faire un truc pas mal en posant des questions et en essayant des trucs. Je ne sait pas si tu as lu ça : https://www.planet-casio.com/Fr/forums/topic14655-1-Les_espaces_3D_(coder).html ?
Planetarium

√(2+2-2+2-2+2+2-2-2-2) = 0
MactulHors ligneMembrePoints: 390 Défis: 0 Message

Citer : Posté le 20/03/2019 15:07 | #


Merci Disperseur j'aime bien avoir des liens pour voir des trucs en 3D

Ajouté le 20/03/2019 à 15:20 :
J'ai essayé ton programme SEE 3D et je suis devant une porte et je ne peut rien faire

D'ailleurs si tu t'est intéressé la 3D tu peut me dire ce que tu pense de mon prog?

Ajouté le 20/03/2019 à 15:31 :
Ahh...
J'ai réussi à le faire marcher,
mais tu devrais d'autant essayer mon prog il complète bien ton travail
Mes programmes
Cliquer pour enrouler
MactulHors ligneMembrePoints: 390 Défis: 0 Message

Citer : Posté le 21/03/2019 19:41 | # | Fichier joint


Bon ça fait quatre messages d'affilés que je poste, je me sens seul

Quoi qu'il en soit, voici un nouveau programme qui fait évoluer la taille du bloc en temps réel, il vient vers vous!

PS: J'ai oublié d'enlever le coef directeur au début
mettez n'importe quoi
Mes programmes
Cliquer pour enrouler
DisperseurHors ligneMembrePoints: 1332 Défis: 0 Message

Citer : Posté le 21/03/2019 20:21 | #


Excuse moi j'étais ailleurs (des "épreuves longues", en gros 1 semaine d'intérros sur toutes les matières. Rappel: je suis en 2nd). Le programme SEE3D est un peu merdique et ce n'est pas le seul dans son genre de ma conception . Si ça t'intéresse (et je pense que oui) demain je te poste le programme que toutes ces questions et explications de la part de Lephenixnoir (encore et toujours remercié ) m'ont permis de réaliser. Tu y vois un repère en 3d qui peut de déplacer et tourner (pas dans les bonnes directions je n'ais pas réussit ). Ce programme fonctionne comme décrit dans le topic " Les espaces 3d: Coder" que tu as été voir. Dis moi ce que tu en pense, peut être que tu pourras l'améliorer, qui sait

PS: Il date d'il y a au moins 1 an et demi ce programme je ne me souviens donc pas de toutes les subtilités
Planetarium

√(2+2-2+2-2+2+2-2-2-2) = 0
LightmareHors ligneMembre de CreativeCalcPoints: 416 Défis: 0 Message

Citer : Posté le 21/03/2019 20:54 | #


salut Mactul ! je viens de trouver uin super site qui explique le raycasting ! et c'est plus simple à faire quie ce que je pensais !

http://projet-moteur-3d.e-monsite.com/pages/raycasting/raycasting.html
While 1
WhileEnd

une boucle encore plus optimisée que celle de Kikoodx
DisperseurHors ligneMembrePoints: 1332 Défis: 0 Message

Citer : Posté le 21/03/2019 21:15 | #


Ce n'est pas non plus de la tarte.. le plus dur c'est de simuler mathématiquement les rayons et la lentille
Planetarium

√(2+2-2+2-2+2+2-2-2-2) = 0
LephenixnoirEn ligneAdministrateurPoints: 14126 Défis: 136 Message

Citer : Posté le 21/03/2019 21:48 | #


Pour la lentille, ce qui est fait habituellement n'est pas compliqué. En supposant que ton repère a deux axes le long de l'écran et le troisième orthonogal à l'écran, il suffit de diviser les deux premières coordonnées par la troisième. Et pouf, la perspective apparait !
DisperseurHors ligneMembrePoints: 1332 Défis: 0 Message

Citer : Posté le 22/03/2019 07:17 | #


Oui c'est 0lis ou moins la base

Ajouté le 22/03/2019 à 07:35 :
Je m'étais débarrassé de toutes ces idées et questions qui fourmillaient dans ma tête au sujet de la 3D. Mais maintenant que je vous parle vous ravivez en moi mon envie d'avancer dans ce domaine.. Tant que Windmil de sorts pas en version finale (on serait morts ).
@Mactul: Ça me ferais plaisir de programmer avec toi pour améliorer mon programme et en créer un à deux si ça te dit. Le défi serait de le faire en Basic pour le moment. Après si ça fonctionne on pourra voir comment il se comporte sur C.basic puis on pourra envisager le portage en C (dans un futur lointain )
Planetarium

√(2+2-2+2-2+2+2-2-2-2) = 0
DisperseurHors ligneMembrePoints: 1332 Défis: 0 Message

Citer : Posté le 22/03/2019 12:04 | # | Fichier joint


@Mactul: Voilà, je t'ais mis en fichier joint le g2m contenant:
-3D VUE -> C'est le premier qui ressemblais à quelque chose si tu vois ce que je veut dire
(Utilise Les flèches directionnelles pour déplacer le bateau et les touches SHIFT et ALPHA pour le zoom. Attention il n'y a pas de limite et au delà d'un certain point il y a une erreur)
-3D-4-MOT -> C'est le programme que j'ai fait en utilisant les matrices comme l’expliquait Lephenixnoir dans le topic "Les espaces 3D: Coder".
(Mêmes commandes que pour l'autre mais cette fois-ci utilise F1 et F6 pour réaliser cette magnifique rotation qui ne rime à rien )

Edit 1:
J'ai relu la page très bien expliquée donnée par Lightmare et me suis dit que pour simuler les rayons "détecteurs" on pourrait utiliser une fonction qui permettrait à un pointeur de se déplacer virtuellement dans la matrice contenant la map pour voir si il rencontre un mur. Et si oui alors on calcule sa distance à la caméra en utilisant cette bonne vieille formule de seconde permettant de calculer la distance entre deux points: sqrt((Xb-Xa)^2+(Yb-Ya)^2). Le truc c'est que je n'ai pas du tout en tête la forme de cette mystérieuse fonction

Edit 2:
Cette fonction serait affine
Planetarium

√(2+2-2+2-2+2+2-2-2-2) = 0
MactulHors ligneMembrePoints: 390 Défis: 0 Message

Citer : Posté le 22/03/2019 19:09 | # | Fichier joint


Merci d'avoir réagi
Je vais regarder tout ce que vous avez posté
Et voici, je pense le dernier programme en Basic qui cette fois est presque un jeu
Mes programmes
Cliquer pour enrouler
DisperseurHors ligneMembrePoints: 1332 Défis: 0 Message

Citer : Posté le 22/03/2019 19:16 | #


Le morceau de ton code qui affiche le cube est un peu hard-codé.. regarde mon programme 3D VUE, déjà tu remarqueras que d'avoir des modèles 3D fixes est beaucoup mieux que de faire une formule compliquée comme celle que tu as faite pour chaque élément. Tu as une partie de ton programme qui initialise les modèles 3D et l'autre qui les affiches quelque soit leur taille .
Planetarium

√(2+2-2+2-2+2+2-2-2-2) = 0
MactulHors ligneMembrePoints: 390 Défis: 0 Message

Citer : Posté le 22/03/2019 19:16 | #


Disperseur a écrit :
@Mactul: Ça me ferais plaisir de programmer avec toi pour améliorer mon programme et en créer un à deux si ça te dit. Le défi serait de le faire en Basic pour le moment. Après si ça fonctionne on pourra voir comment il se comporte sur C.basic puis on pourra envisager le portage en C (dans un futur lointain)


Disperseur, j'aurais une joie incroyable à travailler avec toi, on apprendrais des tas de trucs ensemble
En revanche, j'ai voulu essayer ça avec un type sur scratch en ligne, (il y a bien longtemps)
Et ça n'a pas marché , il faut trouver une organisation fonctionnelle...
PS: finissons cette discussion en message privé

Ajouté le 22/03/2019 à 19:19 :
un commentaire de retard...
Le but de ce topic était justement de trouver une solution moins crado
Et vous m'avez fournis de supers trucs
PS:le troisième fichier est moins crado en rendu
Mes programmes
Cliquer pour enrouler
DisperseurHors ligneMembrePoints: 1332 Défis: 0 Message

Citer : Posté le 22/03/2019 19:28 | # | Fichier joint


Voici la version officielle de mon programme 3D VUE
Planetarium

√(2+2-2+2-2+2+2-2-2-2) = 0
MactulHors ligneMembrePoints: 390 Défis: 0 Message

Citer : Posté le 22/03/2019 19:30 | #


OK, je testerais quand j'aurais le temps
Mes programmes
Cliquer pour enrouler
DisperseurHors ligneMembrePoints: 1332 Défis: 0 Message

Citer : Posté le 23/03/2019 08:04 | #


Du coup je n'ais pas eu de réponse :
Disperseur a écrit :
J'ai relu la page très bien expliquée donnée par Lightmare et me suis dit que pour simuler les rayons "détecteurs" on pourrait utiliser une fonction qui permettrait à un pointeur de se déplacer virtuellement dans la matrice contenant la map pour voir si il rencontre un mur. Et si oui alors on calcule sa distance à la caméra en utilisant cette bonne vieille formule de seconde permettant de calculer la distance entre deux points: sqrt((Xb-Xa)^2+(Yb-Ya)^2). Le truc c'est que je n'ai pas du tout en tête la forme de cette mystérieuse fonction


Edit :
J'ai la solution !!!
Voici la fonction. On prendra r=1 (aucunne importance):
f(x)=((0-(r*sin(to)))/(0-(r*cos(to))))*X

C'est plus propre en fraction . Pour être utilisée la fonction recevra un petit "int()".

Édit 2 :
@Mactul: Là il va falloir que tu te souviennes de tes cours de maths de début d'année
Planetarium

√(2+2-2+2-2+2+2-2-2-2) = 0
MactulHors ligneMembrePoints: 390 Défis: 0 Message

Citer : Posté le 23/03/2019 20:02 | #


T'inquiète pas pour les maths, je suis un crack
il faut que je prenne le temps de lire le truc de lightmare
Mes programmes
Cliquer pour enrouler
DisperseurHors ligneMembrePoints: 1332 Défis: 0 Message

Citer : Posté le 24/03/2019 11:03 | #


J'ai simplifié la fonction rayon:
f(x)=(tan θ)*X


Ajouté le 24/03/2019 à 12:39 :
Ah ben je crois que c'est la que je vais avoir besoin d'aide. Je n'arrive pas à faire fonctionner ma fonction dans une matrice. Pour faire tourner le rayon autour du centre sans prendre en compte le 90°..
Edit:
Je crois qu'utiliser tout simplement X=r*cos θ et Y=r*sin θ pour déplacer mon rayon serait plus simple..
Edit:
Solution trouvée. Je fais une simple rotation pour le rayon et j'utilise les deux formules qui mettent en relation le polaire et le cartésien. A l'occasion je pose le code.

Planetarium

√(2+2-2+2-2+2+2-2-2-2) = 0
DisperseurHors ligneMembrePoints: 1332 Défis: 0 Message

Citer : Posté le 24/03/2019 19:12 | # | Fichier joint


@Mactul: Voici le .ZIP avec les deux programmes dont je t'ai parlé dans mon dernier MP

PS: Je l'ai baptisé "RCMOT" pour "RayCastingMotor", tu as une autre idée ?
Planetarium

√(2+2-2+2-2+2+2-2-2-2) = 0
KikoodxHors ligneMembrePoints: 983 Défis: 7 Message

Citer : Posté le 24/03/2019 21:32 | #


Vous ne pourriez pas créer un topic dédié à votre projet ou changer la catégorie ?
C'est une discussion ou Mactul a demandé un avis sur son moteur 3D.

À propos du raycasting, j'ai trouvé ce lien qui l'explique très bien (bon c'est du C++ mais l'important c'est l'idée).
https://lodev.org/cgtutor/raycasting.html

J'ai vu le lien de Lightmare, mais plus vous avez de ressources mieux c'est
2+2=5
DisperseurHors ligneMembrePoints: 1332 Défis: 0 Message

Citer : Posté le 25/03/2019 07:32 | #


Merci
On va bientôt en créer un nouveau je pense.. Un peu de patience

Edit :
Et une autre source: https://guy-grave.developpez.com/tutoriels/jeux/doom-wolfenstein-raycasting/#
Cette source est pas mal, on as plusieures infos pratiques
Planetarium

√(2+2-2+2-2+2+2-2-2-2) = 0
Pages : 1, 2Suivante

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2019 | Il y a 44 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd