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.zipRemarque: 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.
#################################
# 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.
#################################
# 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.
#################################
# 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