2010-04-14 5 views
2

J'utilise Blender pour créer des fichiers m3g, puis je les charge dans un programme Java.
Quel est le meilleur moyen de trouver un objet (un Mesh) dans le World? Dois-je créer des classes séparées pour chaque objet, puis les ajouter à un objet World ou attribuer des ID aux objets dans Blender et les trouver dans le programme par ID?
Ou exporter chaque objet dans un fichier M3G distinct?
(Ou d'une autre manière?)Recherche d'objets dans J2ME M3G

Répondre

1

Q1. Si vous connaissez l'ID du Mesh (MESH_ID), puis:

try { 
    Object3D[] roots = Loader.load("http://www.example.com/scene.m3g"); 

    World world = roots[0]; 
    Mesh mesh = world.find(MESH_ID); 
} 
catch(Exception e) { 
    // Handle it 
} 

Q2. Charger une base World:

public class MyCanvas extends Canvas 
    Graphics3D g3d; 
    World world; 
    int currentTime = 0; 

    public MyCanvas() { 
     g3d = Graphics3D.create(); 
     Object root[] = Loader.load("world.m3g"); 
     world = root[0]; 
    } 

    protected void paint(Graphics g) { 
     g3d.bindTarget(g); 
     world.animate(currentTime); 
     currentTime += 50; 
     g3d.render(world); 
     g3d.releaseTarget(); 
    } 
} 

ensuite utiliser l'API pour créer et ajouter plus d'objets dans le monde La documentation de l'API couvre cette question en profondeur:

Q3. Attribuez-les dans Blender, puis utilisez la méthode find pour obtenir l'instance exacte de Object3D dont vous avez besoin.

Q4. Si vous envisagez de réutiliser des maillages (pour différentes applications), organisez-les en fichiers séparés, chargez-les séparément lors de l'initialisation d'une application, puis insérez-les dans le monde.