[n3xt-D] un moteur pour PureBasic

Généralités sur la programmation 3D
Anonyme

Message par Anonyme »

tmyke a écrit :
Cpl.Bator a écrit :Ha , mais imagine que j'ai envie de faire une grue avec 4 articulations et au lieu d'une pelleteuse , je veut lui collé une mitrailleuse :D
Pas de problème, faut juste que tu t'assure que tu n'a pas à employer l'instruction iScaleNode sur les éléments du bras de ta pelleteuse, c'est tout.
Et dans ce cas là tu n'aura pas de soucis.Le problème ne surgie que lorsque l'on emploie des ScaleNode sur les
enfants et que l'on veut récupérer les rotations de ces derniers...
des bras en forme de cube sa va être chaud bouillant à réalisé :D
en s'en bas les c... je te taquine...
penche toi plutôt sur XEffect :D en s'en fou de la grue :)
Anonyme

Message par Anonyme »

heu , le pbi n'a po les fonctions mis à jour :)
tmyke
Messages : 1554
Inscription : lun. 24/juil./2006 6:44
Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E

Message par tmyke »

Cpl.Bator a écrit :des bras en forme de cube sa va être chaud bouillant à réalisé :D
en s'en bas les c... je te taquine...
C'est vrai ;)

Reste les mesh fait sous un modeleur (genre 3DSMax), ou alors tu passe directement par le
scale de la geometrie, et là plus de soucis :)
Cpl.Bator a écrit :penche toi plutôt sur XEffect :D en s'en fou de la grue :)
Je suis dessus, mais je pars pour la sortie dominicale, je reprend dès mon retour, j'en
suis arrêté comme toi à l'erreur sur 'dimension2du', mais je pense avoir la solution ;)
A++
Force et sagesse...
Anonyme

Message par Anonyme »

ok , impec , par contre tu as du trafiqué iNodeRotation() , il ne marche plus :/
tmyke
Messages : 1554
Inscription : lun. 24/juil./2006 6:44
Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E

Message par tmyke »

Oups, j'ai du oublié la partie include lors de la dernière update, j'ai remis à jour :?

Sinon, pour iNodeRotation, comme je l'ai maladroitement explique avant, pour les enfant,
passe plutot par iNodeAbsoluteRotation. Par contre, quand il n'y a pas de parent, alors
iNodeRotation fait parfaitement l'affaire. C'est la transcription des instrcutions d'Irrlicht. 8)
Force et sagesse...
reno
Messages : 18
Inscription : sam. 16/mai/2009 16:47

Message par reno »

Haaarggg, je viens d'essayer N3XT : pas de chance, avec la version de démo, je suis limité à un certain nombre de lignes de code :cry:

Tu n'aurais pas un petit exemple en quelques lignes pour voir si ça marche ?

Je vois que tu fais aussi un portage en C++. Comme en ce moment je me cherche un logiciel performant me permettant de faire de la 2D "évolué" dans un premier temps. PB + N3XT me semble vraiment l'idéal. Qu'est-ce que tu en penses à mon niveau ; utiliser PB+N3XT ou m'orienter vers du C+++N3XT ? Il y a quelques années j'avais essayé le C++ avec DirectX... entre la configuration de l'éditeur et la doc j'ai été vite dégouté. En même temps le C c'est plus universel...
Anonyme

Message par Anonyme »

iGetDeltaMouseX/Y()

Il faudrait que cette fonction ne bloque pas sur les bord de l'écran
et si la souris ne bouge pas alors elle envois 0 ( car si je bouge la souris , et que j'arrête , la caméra continue de tourner , elle s'arrête si je tire par exemple.
Anonyme

Message par Anonyme »

une petite question.

Est il possible d'avoir la liste des sommets 3D de n'importe quel modèle ?
(cube , sphere , mesh en fichier )

j'ai pensé à mélanger raytracing / n3xtd
je m'explique:

je créer un point lumieux factice ( pas une ilight )
Pour tout les objets de la scene
pour toute les faces du mesh
pour x = verticex to verticex+1
pour y = verticex to verticex+1
Rayon = lancerayon(x,y,sourcelumineuse)
si Rayon = intersection avec un autre objet
pas de lumière en se point
sinon
Calcul le coéficient de luminosité
fin si
suivant
suivant
suivant
suivant
en gros , c'est l'algo d'un lightmapper.

avec les commandes actuel , peut on envisagé de créer se genre d'application ?
tmyke
Messages : 1554
Inscription : lun. 24/juil./2006 6:44
Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E

Message par tmyke »

reno a écrit :Haaarggg, je viens d'essayer N3XT : pas de chance, avec la version de démo, je suis limité à un certain nombre de lignes de
code :cry:

Tu n'aurais pas un petit exemple en quelques lignes pour voir si ça marche ?
Bizarre, la plupart des code du package ne dépasse pas les 100 lignes. Je ne sais pas quelle est la limite
de la version d'évaluation, mais elle est très certainement au dessus.

reno a écrit :Je vois que tu fais aussi un portage en C++. Comme en ce moment je me cherche un logiciel performant me permettant de faire de
la 2D "évolué" dans un premier temps. PB + N3XT me semble vraiment l'idéal. Qu'est-ce que tu en penses à mon niveau ; utiliser PB+N3XT
ou m'orienter vers du C+++N3XT ? Il y a quelques années j'avais essayé le C++ avec DirectX... entre la configuration de l'éditeur et la
doc j'ai été vite dégouté. En même temps le C c'est plus universel...
Tout d'abord, N3xtD n'est pas se qui se fait de mieux en terme de 2D, du moins pas encore, cela reste quand même à la
base un moteur 3D, même si potentiellement tout est là pour arriver à de très bon résultats.

Pour ce qui est de la solution idéale te concernant, j'avoue que ne te connaissant pas, il n'est pas facile de te conseiller.
Visiblement tu n'es pas vraiment familiarisé aux C/C++, et tu tatonnes. Une solution orientée vers PB me semble être
relativement sage si tu veux mon avis. PureBasic te permettra de te faire la main de la meilleurs des façon, et tu auras
accès à pas mal de bibliothèque, comme effectivement N3xtD. Et tu pourras déjà monter des projets fort respectables.
Mais ce n'est que mon avis ;)

Cpl.Bator a écrit :iGetDeltaMouseX/Y()

Il faudrait que cette fonction ne bloque pas sur les bord de l'écran
et si la souris ne bouge pas alors elle envois 0 ( car si je bouge la souris , et que j'arrête , la caméra continue de tourner , elle s'arrête si je tire par exemple.
J'aurais du y pense de suite, c'est toujours comme cela quand on code à l'arrache ;)
Je rectifie le tir, c'est le cas de le dire, et je fais une mise à jour avant le début de soirée si tout va bien.

Cpl.Bator a écrit :une petite question.

Est il possible d'avoir la liste des sommets 3D de n'importe quel modèle ?
(cube , sphere , mesh en fichier )
Oui, bien sûr, l'exemple 009 montre en partie comment arriver à ce genre de choses,
il existe une vingtaine de fonction permettant des manipulation bas niveau des geométrie
des éléments 3D, à travers les MeshBuffers.

Cpl.Bator a écrit :j'ai pensé à mélanger raytracing / n3xtd
je m'explique: ...
Je sais que tu as récemment travaillé sur des codes de RayTracing, et j'avoue que ce genre
de concept est très allechant. Donc, triple fois OUI.
Cpl.Bator a écrit :avec les commandes actuel , peut on envisagé de créer se genre d'application ?
Je dirais globalement oui, mais si certaines fonctions manquent,
alors nous verront pour les créer ;)
Force et sagesse...
cha0s
Messages : 681
Inscription : sam. 05/mars/2005 16:09

Message par cha0s »

je suis en train de tester c'est plutôt sympa. Quelque remarque sur les sprite 3D.

Il serait bien de pouvoir créer un sprite (ou n'importe quel autre node) via un fichier en mémoire, perso je pack tout mes médias dans un fichier pour éviter d'avoir 150 fichiers alors la je doit enregistrer le fichier sur le disque pour charger mon sprite.

Il est prévue de créer un système de collision comme SpritePixelCollision sous pure ?

Sinon il est possible de jouer avec la transparence et de zoomer sur les sprite ?
Anonyme

Message par Anonyme »

Je dirais globalement oui, mais si certaines fonctions manquent
alors nous verront pour les créer
je viens de jeté un oeil , il manque en effet de quoi parcourir les faces d'un mesh.


ps: les fonctions de picking plante sevère maintenant , cela marchais avec la release ou j'ai créer ma petite démo.
tmyke
Messages : 1554
Inscription : lun. 24/juil./2006 6:44
Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E

Message par tmyke »

cha0s a écrit :je suis en train de tester c'est plutôt sympa. Quelque remarque sur les sprite 3D.

Il serait bien de pouvoir créer un sprite (ou n'importe quel autre node) via un fichier en mémoire, perso je pack tout mes médias
dans un fichier pour éviter d'avoir 150 fichiers alors la je doit enregistrer le fichier sur le disque pour charger mon sprite.
Ce système existe déjà, et est déjà implenté dans N3xtD. ;)

cha0s a écrit :Il est prévue de créer un système de collision comme SpritePixelCollision sous pure ?
Non, pour le moment il n'est pas possible de faire de test à l'ecran sur les pixel, et donc à forciori de
test de collisions par pixel. Comme je l'évoquait dans le post de la sortie de l'Update n°11, la 2D est en fait de la 3D déguisée,
et c'est encore un des points à travailler concernant la 2D, les collisions.
cha0s a écrit :Sinon il est possible de jouer avec la transparence et de zoomer sur les sprite ?
Oui, bien sûr, on peux faire ce que l'on veux, y compris employer les shaders.
Force et sagesse...
tmyke
Messages : 1554
Inscription : lun. 24/juil./2006 6:44
Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E

Message par tmyke »

Cpl.Bator a écrit :
Je dirais globalement oui, mais si certaines fonctions manquent
alors nous verront pour les créer
je viens de jeté un oeil , il manque en effet de quoi parcourir les faces d'un mesh.


ps: les fonctions de picking plante sevère maintenant , cela marchais avec la release ou j'ai créer ma petite démo.
Il y a iMeshBufferIndicesBuffer(), mais effectivement, une ou deux fonctions plus intuitives manquent,
je vais rajouter cela.

Concernant le picking, les exemples du package fonctionnent chez moi, as-tu un petit code test pour
me faire une idée du problème ?
Force et sagesse...
Anonyme

Message par Anonyme »

Déjà depuis aujourd'hui ( ou hier ) le debugger purebasic ne fonctionne plus avec n3xtd ( aucune idée du problème )

- le programme d'exemple qui utilise le picking plante et me renvois
ici :
Structure IBody
setting_force.l

*collision.l ;// specific collision newton pointeur
*body.l ;// body newton pointer

*body_entity.IMesh ;// entity associate to this body
*user_data.l

force.VECTOR3
force_continuos.VECTOR3
torque.VECTOR3
box_size.VECTOR3

collide_body_info.l[36] ; private information
EndStructure INVALID ACCESS MEMORY
voila voila. :)
Anonyme

Message par Anonyme »

Le problème viens de là :
CompilerIf #PB_Compiler_OS = #PB_OS_Linux
; link OpenGL
ImportC "-lGL"
EndImport
;link Xf86
ImportC "-lXxf86vm"
EndImport
; link X11
ImportC "-lX11"
EndImport
; Newton
ImportC "-lNewton"
EndImport

;
ImportC "-lN3xtD"
;
ImportC "-lstdc++"

CompilerEndIf

2 import imbriqué avec un oubli de fermeture ( endimport ) bizarre que le compilo passe...

j'ai corrigé comme ca :

Code : Tout sélectionner

  ImportC "-lstdc++"
  EndImport
  ; 
  ImportC "-lN3xtD"
  ;

mais ca ne règle pas le problème de picking , j'ai IAM sur la fct° de picking maintenant.
Répondre