Bon j'ai fixé le bug apparement. Cela sera dispo dans le prochain update.Cpl.Bator a écrit :- la routine de collision (avec la constante #CONE_PRIMITIVE ) avec le ray ( de n3xtd ) déconne. il me fait des trous.
LightMapping ( UV to XYZ )
-
- Messages : 1554
- Inscription : lun. 24/juil./2006 6:44
- Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E
Bon, en fait le soucis viens de l'emploi de la fonction 'iTexCoordMeshBuffer()'
Le premier paramètre n'est pas le mesh, mais le meshbuffer.
Tu aurais du plutôt ecrire
Voici en guise d'exemple le code de d'application d'une couche de texture lightmapping
que j'ai donné dans mon message plus haut, mais cette fois avec creation en manuel du mesh:
[/code]
Le premier paramètre n'est pas le mesh, mais le meshbuffer.
Tu aurais du plutôt ecrire
Code : Tout sélectionner
iTexCoordMeshBuffer(iMeshGeometry(*bb\node_parent), U_, V_,*bb\vertice_num[0],1)
Voici en guise d'exemple le code de d'application d'une couche de texture lightmapping
que j'ai donné dans mon message plus haut, mais cette fois avec creation en manuel du mesh:
Code : Tout sélectionner
; Include files
IncludePath "includes" : IncludeFile "n3xtD_PB.pbi"
Global *app.l, Quit.l
;----------------------------------------------------------
; open n3xt-D screen
*app = iCreateGraphics3D(800,600)
; << OR >>
;iCreateGraphics3D(800,600, 32, #False, #True, #EDT_DIRECT3D9)
If *app= #Null
End
EndIf
;-----------------------------------
SetCurrentDirectory("media/")
;---------------------------
; define a ManualContruct Mesh
Global *mesh.IMMesh
; creation d'un mesh vide
*mesh=iCreateEmptyMesh()
; addition d'un meshbuffer, type 1 (avec deux coordonnées de textures/vertex)
iAddBufferMesh(*mesh, 1)
; les 3 premiers vertices
v1.l= iAddVertexMesh(*mesh, 0,0,0, $999999, 0,0)
v2.l= iAddVertexMesh(*mesh, 2,2,0, $999999, 0,0)
v3.l= iAddVertexMesh(*mesh, 2,0,0, $999999, 0,0)
; la première face
iAddFaceMesh(*mesh, v1,v2,v3, 0)
; les 3 vertices suivants
v4= iAddVertexMesh(*mesh, 0,2,0, $999999, 0,0)
v5= iAddVertexMesh(*mesh, 2,2,0, $999999, 0,0)
v6= iAddVertexMesh(*mesh, 0,0,0, $999999, 0,0)
; la seconde face
iAddFaceMesh(*mesh, v4,v5,v6, 0)
*meshbuffer.IMeshBuffer = iMeshGeometry(*mesh)
; coordonnée de texture layer 0
iTexCoordMeshBuffer( *meshbuffer, 0, 0, 0)
iTexCoordMeshBuffer( *meshbuffer, 1, 1, 1)
iTexCoordMeshBuffer( *meshbuffer, 0, 1, 2)
iTexCoordMeshBuffer( *meshbuffer, 1, 1, 3)
iTexCoordMeshBuffer( *meshbuffer, 1, 0, 4)
iTexCoordMeshBuffer( *meshbuffer, 0, 1, 5)
; coordonnées de texture layer 1 (les même dans notre cas)
iTexCoord2MeshBuffer( *meshbuffer, 0, 0, 0)
iTexCoord2MeshBuffer( *meshbuffer, 1, 1, 1)
iTexCoord2MeshBuffer( *meshbuffer, 0, 1, 2)
iTexCoord2MeshBuffer( *meshbuffer, 1, 1, 3)
iTexCoord2MeshBuffer( *meshbuffer, 1, 0, 4)
iTexCoord2MeshBuffer( *meshbuffer, 0, 1, 5)
; comme l'exemple précédent, travail sur le material
; en mode #EMT_LIGHTMAP
iMaterialTypeNode(*mesh, #EMT_LIGHTMAP )
;chargement et creation de deux textures
*colormap.ITexture = iLoadTexture( "rockwall.bmp")
*lightmap.ITexture = iLoadTexture( "lightmap.bmp")
; affecte les textures aux bon canaux
iMaterialTextureNode(*mesh, *colormap , 0)
iMaterialTextureNode(*mesh, *lightmap , 1)
; create a camera
Define *cam.ICamera = iCreateCamera( )
iPositionNode(*cam, 0,0,-4)
; ---------------------------------------
; main loop
; ---------------------------------------
Repeat
iTurnNode(*mesh,0,0.4,0)
; if Escape Key, exit
If iGetKeyDown(#KEY_ESCAPE)
Quit=1
EndIf
; ---------------
; Render
; ---------------
iBeginScene(10,10,10)
iDrawScene()
iEndScene()
Until Quit=1
; end
iFreeEngine()
Force et sagesse...
-
- Messages : 1554
- Inscription : lun. 24/juil./2006 6:44
- Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E
Simplifier le cube est facile. Par contre, le soucis c'est que les mesh que tu va loader dans l'avenir auront aussi parfois ce genre de soucis.
Sous DirectX, il existe une fonctions qui simplifie les mesh justement, en suppriment les vertices redondants.
Je ne suis pas sûr que cela existe sous OGL.
Sous DirectX, il existe une fonctions qui simplifie les mesh justement, en suppriment les vertices redondants.
Je ne suis pas sûr que cela existe sous OGL.
Force et sagesse...
Ok , c'est cool.
Ca m'évitera de fabriqué un modèle de fichier pour la sauvegarde
Sinon , je passe du triangle au mesh plus complexe :

Comme on voit sur l'image , j'arrive à stocké la texture de toute les faces sur le même fichier. pas facile de faire l'économe en pixel...
Pour les Mesh avec plus de 1000 faces va falloir une lightmap de 4096x4096 au moins
Si quelqu'un à un algorithme qui me permet de ranger des triangles quelconque de facon optimisé sur une surface 2D, qui me le fasse savoir ^^
Ca m'évitera de fabriqué un modèle de fichier pour la sauvegarde

Sinon , je passe du triangle au mesh plus complexe :

Comme on voit sur l'image , j'arrive à stocké la texture de toute les faces sur le même fichier. pas facile de faire l'économe en pixel...
Pour les Mesh avec plus de 1000 faces va falloir une lightmap de 4096x4096 au moins

Si quelqu'un à un algorithme qui me permet de ranger des triangles quelconque de facon optimisé sur une surface 2D, qui me le fasse savoir ^^
- Progi1984
- Messages : 2659
- Inscription : mar. 14/déc./2004 13:56
- Localisation : France > Rennes
- Contact :
Envisages tu de faire des lightmaps avec plusieurs sources de lumière ?
Librairies & Applications : https://www.purebasic.fr/french/viewtop ... f=8&t=6220
Site Web : https://rootslabs.net
Site Web : https://rootslabs.net
-
- Messages : 1554
- Inscription : lun. 24/juil./2006 6:44
- Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E
Tres impressionnant en tous les cas, beau travail, ce qui me plais au premier coups d'oeil, c'est le cote progressif
et lissée du lightmap, vraiment bien.
Sinon, desole, il n'y a pas de possibilite d'export de mesh3D sous Irrlicht. donc, si on en veut un, va falloir se le coder.
et lissée du lightmap, vraiment bien.
Sinon, desole, il n'y a pas de possibilite d'export de mesh3D sous Irrlicht. donc, si on en veut un, va falloir se le coder.

Force et sagesse...
- Progi1984
- Messages : 2659
- Inscription : mar. 14/déc./2004 13:56
- Localisation : France > Rennes
- Contact :
Voilà des infos sur le B3D :
http://www.purebasic.fr/french/viewtopi ... 6289#56289
http://www.purebasic.fr/french/viewtopi ... 6289#56289
Librairies & Applications : https://www.purebasic.fr/french/viewtop ... f=8&t=6220
Site Web : https://rootslabs.net
Site Web : https://rootslabs.net