Utilisation du LOD dans un jeu

Document sans nom


Méthode pour l'utilisation du LOD dans un jeu



Introduction

Nous allons dans ce tutoriel apprendre à utiliser le LOD sur un objet.
Pourquoi ce tutoriel ?
LOD étant une abréviation de "Level Of Detail" signifie "Niveau de détail en français". Le LOD est donc une technique qui définit le niveau de détail d'un objet en fonction de la distance entre lui et l'utilisateur. Ainsi, les objets loin de l'utilisateur baissent en nombre de polygones et améliore la fluidité.

Étape 1 : Préparation de l'objet et de ses "mesh"



Si vous avez bien suivi, vous devez avoir trois objets comme l'image ci-dessus. Maintenant, créez un plan assez large et positionnez les objets les plus pauvres en polygones en dessous de ce plan.

Étape 2 : Création du script

Une fois la scène préparée, on peut s'attaquer au script python ! Mettez-vous dans la zone "Text Editor" et sélectionnez le texte "Text" qui est déjà créé par défaut et renommez-le "lodscript" (ou autre chose).

Pour commencer il faut importer les modules :

import GameLogic
import math

Le module "math" ? Et oui on va faire un peu de calcul !
Maintenant on charge le "controller" qui exécute le script :

cont = GameLogic.getCurrentController()

On récupère l'objet qui possède ce "controller" et on récupère la caméra :

owner = cont.getOwner()
objList = GameLogic.getCurrentScene().getObjectList()
camera = objList["OBCamera"]

On récupère les positions de ces deux objets :

ownerposition = owner.getPosition()
cameraposition = camera.getPosition()

Et maintenant on fait remuer ses meninges ! Ici il s'agit du calcul de la distance de deux objets à l'aide de leur deux positions. Voici la formule littérale :


(Source : Wikipédia)
Et voici la formule "python" :

result = math.sqrt(((ownerposition[0]-cameraposition[0])*(ownerposition[0]-cameraposition[0]))+((ownerposition[1]-cameraposition[1])*(ownerposition[1]-cameraposition[1])))

"sqrt" étant l'abréviation de "Square root" signifie Racine carrée.
Maintenant on prépare le "Replace Mesh" en le récupérant :

act = cont.getActuator("lod")

Enfin on se sert du calcul effectué pour l'appliquer sur l'objet.
Ainsi :
-Si la distance est supérieure à 20, on remplace le mesh par Spherelod1 (très peu de polygones)
-Si la distance est supérieure à 15 ET inférieure à 20, on remplace le mesh par Spherelod2 (pas mal de polygones)
-Si la distance est supérieure à 0 ET inférieure à 15, on remplace le mesh par Spherelod3 (beaucoup de polygones)

Ce qui donne en python ceci :

if (int(result) > 20):
act.setMesh("Spherelod1")
act.instantReplaceMesh()
elif (int(result) > 15):
if (int(result) < 20):
act.setMesh("Spherelod2")
act.instantReplaceMesh()
elif (int(result) > 0):
if (int(result) < 15):
act.setMesh("Spherelod3")
act.instantReplaceMesh()

Attention aux indentations syntaxiques ! Sinon le script aura une erreur !

Étape 3 : Application du script


Le script est prêt ! Ajustez maintenant la Logique de la Camera pour que le LOD soit appliqué lors du lancement du jeu :
-Sélectionnez la caméra
-Allez dans le panneau "Logic" (F4)
-Ajoutez un sensor "Always"
-Ajoutez un controller "Python" en mettant dans script : "lodscript" (ou le nom que vous avez donné précédemment à votre script)
-Ajoutez un actuator EditObject> Replace mesh et renommez l'actuator "lod"

Aperçu de ce que vous devez obtenir :


Voilà appuyez sur P pour lancer le jeu (même si pour l'instant cela n'en ait pas vraiment un :-) )

Conclusion

Le tutoriel est terminé, vous savez maintenant utiliser le LOD dans vos jeux !
Voici un exemple de l'utilisation du LOD, vous pouvez avancer et reculer avec la caméra. Vous constaterez que le niveau de détail de chaque sphère change en fonction de la position de la caméra !
Télécharger le fichier d'exemple

tutoriel rédigé pour le Blender Clan par Monster_kill, 28 juillet 2008

    


Les commentaires appartiennent à leurs auteurs. Nous ne sommes pas responsables de leur contenu.
Auteur Conversation
Bobibou
OverdOzed


Inscrit le: 24/7/2008
De: Paris
Envois: 3447
 Re: Utilisation du LOD dans un jeu 10/11/2010 21:19  Mis à jour: 10/11/2010 21:20

Citation :

Et voici la formule "python" :

result = math.sqrt(((ownerposition[0]-cameraposition[0])*(ownerposition[0]-cameraposition[0]))+((ownerposition[1]-cameraposition[1])*(ownerposition[1]-cameraposition[1])))

Il y a plus simple :
result = (ownerposition[0]-cameraposition[0])**2 + (ownerposition[1]-cameraposition[1])**2)**0.5

Tu peux même d'épargner tous ces calculs très simplement :
result = owner.getDistanceTo(camera)


Dans les deux cas, pas besoin du module math.

 
Anarchy62
OverdOzed


Inscrit le: 26/12/2012
De:
Envois: 395
 Re: Utilisation du LOD dans un jeu 12/12/2013 9:09  Mis à jour: 12/12/2013 9:09

Salut, faudrait remettre au goût du jour parce-qu'à première vue cela ne fonctionne plus ;)

 

Sujets récemment répondus
Forums Sujets Réponses Lus Dernières contributions
Questions & Réponses [non résolu] Blender et OBJ 0 44 01/02 11:09:31
stigmamax 
Mes premières images sous Blender (débutants) 2.80 ---> 3.00 ? 2 103 31/01 15:27:50
HarDrive 
The Blender Clan 'tchat Buy (50 Pieces) New Samsung Galaxy Z Flip4 128GB Unlocked $17,450 0 76 26/01 07:44:35
emailychang01 
The Blender Clan 'tchat Buy (30 Pcs) New Mac mini M2 (2023) 256GB SSD $8,970: www.cutebitelectronics.com 0 48 25/01 11:02:28
emailychang01 
The Blender Clan 'tchat Buy (50 Pcs) New iMac M1 24-inch (2021) 512GB SSD $44,950 Website: www.cutebitelectronics.com 0 65 24/01 09:21:49
emailychang01 
The Blender Clan 'tchat Buy (50 Pcs) Macbook Air M2 13.6-inch 512GB SSD $54,950 Website: www.cutebitelectronics.com 0 76 23/01 09:20:38
emailychang01 
Questions & Réponses circuit avec dévers 3 109 22/01 18:42:26
moonboots 
The Blender Clan 'tchat Buy (50 Pcs) MacBook Pro M2 14-inch 512GB SSD $79,950 0 64 21/01 10:19:51
emailychang01 
The Blender Clan 'tchat Buy (50 Pieces) New Apple iPad Air 10.9-inch (2022) 256GB Wi-Fi + Cellular $24,950 0 91 20/01 08:43:41
emailychang01 
The Blender Clan 'tchat Buy (50 Pcs) New Mac mini M2 (2023) 256GB SSD $9,950 Website: www.cutebitelectronics.com 0 90 19/01 08:19:28
emailychang01 
The Blender Clan 'tchat Buy (50 Pieces ) New Apple iPad Mini 8.3-inch (2021) 256GB Wi-Fi + Cellular $22,450 0 66 18/01 08:46:54
emailychang01 
Hors Sujet !! Victime de piratage 0 133 18/01 00:01:38
Lylo 
The Blender Clan 'tchat Buy (50 Pieces) New Apple iPad Pro 12.9-Inches 2021 1TB Wifi + Cellular $69,950 0 83 17/01 09:54:03
emailychang01 
The Blender Clan 'tchat Buy (50 Pieces) New Apple iPad Pro 11-Inches 2021 2TB Wifi + Cellular $79,950 0 88 14/01 19:23:01
emailychang01 
Questions & Réponses [non résolu] Material preview et résolution 0 93 13/01 10:13:25
zeromeetsinfinity 
The Blender Clan 'tchat Buy (50 Pieces) New Original Unlocked Apple iPhone 13 Pro Max 5G 1TB $54,950 0 88 12/01 09:21:35
emailychang01 
Hors Sujet !! Verifpro.net - paypal, ebay, banks, crypto, docs and more! 0 77 11/01 18:57:13
julien_costa 
The Blender Clan 'tchat Buy (50 Pieces) New Original Unlocked Apple iPhone 12 Pro 5G 512GB $24,950 0 91 11/01 07:45:50
emailychang01 
Questions & Réponses [non résolu] Soucis de pivots et rotations à l'import dans un fichier fbx avec parents/enfants 0 4380 10/01 16:32:57
Brice_Willus 
The Blender Clan 'tchat Buy (30 Pieces) New Meta - Quest Pro Virtual Reality Headset - 256GB $29,970 0 88 10/01 10:34:12
emailychang01 

Qui est en ligne
153 utilisateur(s) en ligne (dont 2 sur Tutoriels)

Membre(s): 0
Invité(s): 153


plus...
Nouveaux membres
MathiasFul 18/8/2022
VicenteZcl 18/8/2022
OlivaL1007 18/8/2022
Adrian8943 18/8/2022
NorbertoGe 18/8/2022
VeronaKais 18/8/2022
BettieSile 18/8/2022
DarylTier 18/8/2022
BretParkhi 18/8/2022
LeoTrotter 18/8/2022
Dernier Ajout
2020-09-24.jpg

Evènements à venir
Fev 15
Anniversaire de Dany
Fev 23
anniversaire de windspirit
Mar 14
Anniversaire de AMV12
plus 229 plus d'élément(s)
 Par Mickaël Guédon [ebrain] © 2003-2021 The Blender Clan - hébergé par TuxFamily - Site déclaré à la CNIL sous le numéro 1155445