Créer un cube 3D texturé au format obj


La présente page montre comment créer des cubes texturés au format obj, à l'aide d'un éditeur de texte et d'un logiciel graphique (kolourpaint sous Linux, paint sous Windows ou Gimp par exemple). Pour visualiser le cube, on utilise ici le logiciel meshlab version 2020 sous ubuntu 18.04.

fichiers-sources.zip

Remarque: Si meshlab affiche le cube avec un effet de perspective trop prononcé, il suffit de cliquer View/Toggle orthographic camera pour supprimer cet effet.

1) Cube à mailles triangulaires

Le cube suivant possède est constitué de 12 mailles ("faces" en anglais) triangulaires.
Le cube comprend deux fichiers : le fichier cube01.obj contient la description de la géométrie du cube; le fichier cube01.mtl.obj contient le nom et l'emplacement du fichier image utilisé pour la texture. Le fichier texture.png utilisé pour la texture possède une taille de 1024x1024 pixels.

Application d'une texture  mono-image sur un cube 3D à mailles triangulaires

Rendu d'un cube 3D texturé,  mono-image, à mailles triangulaires

#################################
# cube01.obj
# v: vertices:8
# vt: texture coords:4
# f: faces:12
###################################
mtllib ./cube01.obj.mtl
usemtl mat0
#---------------------------------
v -0.500000 -0.500000 0.500000
v 0.500000 -0.500000 0.500000
v 0.500000 0.500000 0.500000
v -0.500000 0.500000 0.500000
v -0.500000 -0.500000 -0.500000
v 0.500000 -0.500000 -0.500000
v 0.500000 0.500000 -0.500000
v -0.500000 0.500000 -0.500000
#---------------------------------
vt 0.000000 0.000000
vt 1.000000 0.000000
vt 1.000000 1.000000
vt 0.000000 1.000000
#---------------------------------
f 1/1/ 2/2/ 3/3/
f 1/1/ 3/3/ 4/4/
f 5/1/ 1/2/ 4/3/
f 5/1/ 4/3/ 8/4/
f 2/1/ 6/2/ 7/3/
f 2/1/ 7/3/ 3/4/
f 6/1/ 5/2/ 8/3/
f 6/1/ 8/3/ 7/4/
f 5/1/ 6/2/ 2/3/
f 5/1/ 2/3/ 1/4/
f 4/1/ 3/2/ 7/3/
f 4/1/ 7/3/ 8/4/

#################################
# cube01.obj.mtl
# material file
###################################
newmtl mat0
Kd 1.000000 1.000000 1.000000
map_Kd texture.png

2) Cube à mailles carrés

Le cube suivant donne un rendu identique au précédent mais est constitué de 6 mailles ("faces" f carrés), ce qui rend plus facile le plaquage de la texture.

Application d'une texture mono-image sur un cube 3D à mailles carrés

Rendu d'un cube 3D texturé,  mono-image, à mailles carrés

#################################
# cube02.obj
# v: vertices:8
# vt: texture coords:4
# f: faces:6
###################################
mtllib ./cube02.obj.mtl
usemtl mat0
#--------------------------------
v -0.500000 -0.500000 0.500000
v 0.500000 -0.500000 0.500000
v 0.500000 0.500000 0.500000
v -0.500000 0.500000 0.500000
v -0.500000 -0.500000 -0.500000
v 0.500000 -0.500000 -0.500000
v 0.500000 0.500000 -0.500000
v -0.500000 0.500000 -0.500000
#--------------------------------
vt 0.000000 0.000000
vt 1.000000 0.000000
vt 1.000000 1.000000
vt 0.000000 1.000000
#--------------------------------
f 1/1/ 2/2/ 3/3/ 4/4/
f 5/1/ 1/2/ 4/3/ 8/4/
f 2/1/ 6/2/ 7/3/ 3/4/
f 6/1/ 5/2/ 8/3/ 7/4/
f 5/1/ 6/2/ 2/3/ 1/4/
f 4/1/ 3/2/ 7/3/ 8/4/

#################################
# cube02.obj.mtl
# material file
###################################
newmtl mat0
Kd 1.000000 1.000000 1.000000
map_Kd texture.png

La variante suivante permet d'obtenir une image différente sur chaque face du cube.

Application d'une texture multi-images sur un cube 3D à mailles carré

Rendu d'un cube 3D texturé,  multi-images, à mailles carrés

#################################
# cube03.obj
# v: vertices:8
# vt: texture coords:13
# f: faces:6
###################################
mtllib ./cube03.obj.mtl
usemtl mat0
#--------------------------------
v -0.500000 -0.500000 0.500000
v 0.500000 -0.500000 0.500000
v 0.500000 0.500000 0.500000
v -0.500000 0.500000 0.500000
v -0.500000 -0.500000 -0.500000
v 0.500000 -0.500000 -0.500000
v 0.500000 0.500000 -0.500000
v -0.500000 0.500000 -0.500000
#--------------------------------
vt 0.00 1.00
vt 0.25 1.00
vt 0.50 1.00
vt 0.75 1.00
vt 1.00 1.00
vt 0.00 0.75
vt 0.25 0.75
vt 0.50 0.75
vt 0.75 0.75
vt 1.00 0.75
vt 0.00 0.50
vt 0.25 0.50
vt 0.50 0.50
#--------------------------------
f 1/6/ 2/7/ 3/2/ 4/1/
f 5/7/ 1/8/ 4/3/ 8/2/
f 2/8/ 6/9/ 7/4/ 3/3/
f 6/9/ 5/10/ 8/5/ 7/4/
f 5/11/ 6/12/ 2/7/ 1/6/
f 4/12/ 3/13/ 7/8/ 8/7/

#################################
# cube03.obj.mtl
# material file
###################################
newmtl mat0
Kd 1.000000 1.000000 1.000000
map_Kd texture03.png