Discuss Scratch
- Discussion Forums
- » Français
- » Comment faire du ray tracing rapide ?
- Lu_Li_49
-
Scratcher
500+ posts
Comment faire du ray tracing rapide ?
Bonjour,
J'ai un projet où je voudrais faire beaucoup de 3D, et comme scratch est limité en puissance je me suis demandé si c'est possible de faire un “ray tracing” simple où, pour chaque pixel de l'écran, un rayon est lancé dans la direction de la caméra, et s'il butte sur quelque chose (comme un cube ou une pyramide) il prend la couleur et la dessine sur l'écran en fonction d'une texture prédéfinie de la face.
En théorie c'est plutôt simple mais je ne sais pas par où commencer… J'ai déjà une base de 3D avec la fonction
Merci d'avance pour votre aide !
P.-S.: Voici le code :


J'ai un projet où je voudrais faire beaucoup de 3D, et comme scratch est limité en puissance je me suis demandé si c'est possible de faire un “ray tracing” simple où, pour chaque pixel de l'écran, un rayon est lancé dans la direction de la caméra, et s'il butte sur quelque chose (comme un cube ou une pyramide) il prend la couleur et la dessine sur l'écran en fonction d'une texture prédéfinie de la face.
En théorie c'est plutôt simple mais je ne sais pas par où commencer… J'ai déjà une base de 3D avec la fonction
aller à x:() y:() z:()ainsi que le script qui dessine l'écran. Il me manque juste le calcul à mettre dans la fonction qui récupère la couleur.
Merci d'avance pour votre aide !
P.-S.: Voici le code :


Last edited by Lu_Li_49 (March 1, 2026 14:33:41)
- ma33-ma
-
Scratcher
500+ posts
Comment faire du ray tracing rapide ?
Bonjour,Tu a sans doute du tomber sur des projets de Raycasting, tu remarquera que sur scratch il sont très lents alors maintenant suppose qu'il faut multiplier par la hauteur de ton écran.
J'ai un projet où je voudrais faire beaucoup de 3D, et comme scratch est limité en puissance je me suis demandé si c'est possible de faire un “ray tracing” simple où, pour chaque pixel de l'écran, un rayon est lancé dans la direction de la caméra, et s'il butte sur quelque chose (comme un cube ou une pyramide) il prend la couleur et la dessine sur l'écran en fonction d'une texture prédéfinie de la face.
En théorie c'est plutôt simple mais je ne sais pas par où commencer… J'ai déjà une base de 3D avec la fonction
Le projet est réalisable mais il risque de ressembles à une grille de couleur de 50x50.Donc pour la 3D c'est généralement plus efficace la 3D ‘'classique’'.
- Lu_Li_49
-
Scratcher
500+ posts
Comment faire du ray tracing rapide ?
Et sur TW ?
J'avais plutôt l'idée de faire une résolution de 240x180. J'ai déjà essayé la 3D classique mais c'est complexe, et quand il y a des milliers de triangles ça doit devenir vite ingérable.
J'avais plutôt l'idée de faire une résolution de 240x180. J'ai déjà essayé la 3D classique mais c'est complexe, et quand il y a des milliers de triangles ça doit devenir vite ingérable.
- ma33-ma
-
Scratcher
500+ posts
Comment faire du ray tracing rapide ?
Et sur TW ?Honnetement ça depend de ton PC essaye de faire tourner a FPS max un raycaster sur TWen res : 2 puis divise le nombre de FPS par 180 tu auras une idée d'à quelle vitesse tourneras le raytracer (y'as des optimisation mais a mon avit pas plus de 80%)
J'avais plutôt l'idée de faire une résolution de 240x180. J'ai déjà essayé la 3D classique mais c'est complexe, et quand il y a des milliers de triangles ça doit devenir vite ingérable.
- Lu_Li_49
-
Scratcher
500+ posts
Comment faire du ray tracing rapide ?
Donc il faudrait six secondes et quart pour effectuer le rendu d'une seule image. Comme je viens de le dire il y a bien des projets qui le font comme celui-ci… Je vois bien qu'il est impossible d'effectuer une telle chose sur scratch mais on peut utiliser TW ainsi que de l'optimisation. J'ai créé ce sujet afin de trouver une idée, si vous en avez une, je suis preneur, même si ça nécessite de baisser la résolution. Voici le projet.
- ma33-ma
-
Scratcher
500+ posts
Comment faire du ray tracing rapide ?
Donc il faudrait six secondes et quart pour effectuer le rendu d'une seule image. Comme je viens de le dire il y a bien des projets qui le font comme celui-ci… Je vois bien qu'il est impossible d'effectuer une telle chose sur scratch mais on peut utiliser TW ainsi que de l'optimisation. J'ai créé ce sujet afin de trouver une idée, si vous en avez une, je suis preneur, même si ça nécessite de baisser la résolution. Voici le projet.En vrai pour le rendu fait de la simplification de couleurs : au lieu de fait 3px verts les uns à cotés des autre fais 1 ligne vert de la couleur moyenne
PS: j'arrive pas a charger ton projet donc jsp trop ou tu en est…
- Lu_Li_49
-
Scratcher
500+ posts
Comment faire du ray tracing rapide ?
Le projet peut pourtant se charger chez moi… c'est juste le projet avec les blocs que j'ai envoyé au premier message
Essaie de le charger avec TW. Pour l'instant je veux juste savoir comment ça fonctionne précisément le ray tracing. J'ai déjà une petite idée mais je ne sait pas si c'est la bonne :
Bonjour,
J'ai un projet où je voudrais faire beaucoup de 3D, et comme scratch est limité en puissance je me suis demandé si c'est possible de faire un “ray tracing” simple où, pour chaque pixel de l'écran, un rayon est lancé dans la direction de la caméra, et s'il butte sur quelque chose (comme un cube ou une pyramide) il prend la couleur et la dessine sur l'écran en fonction d'une texture prédéfinie de la face.
En théorie c'est plutôt simple mais je ne sais pas par où commencer… J'ai déjà une base de 3D avec la fonctionaller à x:() y:() z:()ainsi que le script qui dessine l'écran. Il me manque juste le calcul à mettre dans la fonction qui récupère la couleur.
Merci d'avance pour votre aide !
P.-S.: Voici le code :
Essaie de le charger avec TW. Pour l'instant je veux juste savoir comment ça fonctionne précisément le ray tracing. J'ai déjà une petite idée mais je ne sait pas si c'est la bonne :
définir couleur du pixel à l'écran x:(x) y:(y)::customEn gros c'est à ça que je pense mais j'ignore encore les opération à faire et je ne sait pas si il y a des calculs plus optimisés.
répéter jusqu'à ce que <touche quelque chose::custom>{
aller à x:((position x actuelle::custom) + (calcul complexe pour avancer en 3D en fonction de l'angle de la caméra::custom)) y:(même chose) z:(même chose)::custom
}::control
couleur de la texture de (chose à x:(position x actuelle::custom) y:(position y actuelle::custom) z:(position z actuelle::custom)::custom) à (calcul complexe::custom)::custom
mettre [couleur retournée v] à (couleur de la texture::custom)
- Discussion Forums
- » Français
-
» Comment faire du ray tracing rapide ?