[NoLimits 2] Les tutos de Meletou1

yoyo212

Membre
27 Mai 2010
1 627
0
48
Suisse
www.dawaweb.ch
Sur que c'est une meilleur manière que la mienne.
Pour Vulcain, j'ai fait des captures d'écrans et j'ai ajusté... ça m'a pris des plombes !  :-(

Merci pour ce tuto. Maintenant vous pouvez me dire comment réduire la superficie du terrain ?  :-)
 

yoyo212

Membre
27 Mai 2010
1 627
0
48
Suisse
www.dawaweb.ch
Bon comme Matelou1 ne veut pas poser les scripts avec ses vidéos ...  :?

le voici :
Code:
import com.nolimitscoaster.*;
import nlvm.math3d.*;

public class ExportlineScript extends Script{
  float heartline     = 0.3f;
  float seperation    = 1.5f; 
  float beginDistance = 0.0f;
  int beginIndex = 1;
  
  public Coaster currentCoaster;
  Train fTrain ;
  
  Vector3f last;
  bool first = true ; 
  float dis = 0.0f;
  
  bool breakScript = false;
  
  float totalDistance = 0.0f;
  
  int i=0;
  
 public bool onInit()
  {
    currentCoaster = sim.getCoasterForEntityId(getParentEntityId());
    fTrain = currentCoaster.getTrainAt(0);
    last = new Vector3f();
    
    return true;
  }
  
  public void onNextFrame(float fTickTime){
     if (breakScript) return; 
    
    
    Vector3f fo = new Vector3f(0.0f, 0.0f, 0.0f);
    Vector3f to = new Vector3f(0.0f, 0.0f, 0.0f);
    Vector3f ro = new Vector3f(0.0f, 0.0f, 0.0f);
    Vector3f po = new Vector3f(0.0f, 0.0f, 0.0f);
    
    fTrain.getBogieOrientationAndPosition(0, fo, to, ro, po);
    
    Vector3f cross = new Vector3f(
    
    ro.y * fo.z - ro.z * fo.y,
    ro.z * fo.x - ro.x * fo.z,
    ro.x * fo.y - ro.y * fo.x
    );
    
    cross.normalize();
    cross.mul(heartline);
    cross.add(po);
    
    if (first && beginDistance == 0.0f){
    
    first = false; 
    i++;
    
    } else{
    
    Vector3f v2= po; 
    Vector3f v1= last; 
    float distance = (float) Math.sqrt(Math.pow(v2.x -v1.x, 2) + Math.pow(v2.y -v1.y, 2) + Math.pow(v2.z -v1.z, 2));
    if(first && beginDistance != 0.0f){
    first = false;
    distance= 0.0f; 
    }
    
    
    dis += distance;
    totalDistance = distance;
    
    if (dis > seperation){
    
    if(beginDistance == 0.0f || (beginDistance != 0.0f &&  totalDistance > beginDistance)) {
    
    System.out.println( po.x +"\t"+po.y +"\t"+ (po.z) );
    
    i++;

    }
    
    dis = 0.0f;
    
    	}
    }
    
    last.x = po.x;
    last.y = po.y; 
    last.z = po.z;  
    
    if (i > 490 ){
    breakScript = true ; 
    }
    
  }
}

Pour les utilisateurs de Blender :
Même procédure jusqu'à la création d'un fichier "objet.txt", issu de la copie des vecteurs de la console NL.

Télécharger ce fichier qui est un script python en *.txt ici: http://www.dawaweb.ch/NoLimits2/import_RC2.txt et ouvrez-le avec un éditeur de type bloc note.
Remplacez la ligne 41 par le chemin de votre fichier "objet.txt".
Copiez le tout et collez ça dans l'éditeur text de Blender et cliquez sur 'Run Script'.
Une fenêtre s'ouvre => sélectionnez votre fichier "objet.txt" => Import some data et le tour est joué, vous obtenez la courbe de votre objet.

Merci à DoubleZ et Matpi du blenderclan.  :mrgreen:

 

yoyo212

Membre
27 Mai 2010
1 627
0
48
Suisse
www.dawaweb.ch
J'aurai jamais pensé qu'elle ne servait juste qu'à ça.  :-D
Je pensais que c'était l'élément clef de la création d'un train, raté mais contant tout de même d'avoir un outil pour de beaux traveling, merci !
:mrgreen:
On commence a voir la fin du tour de propriétaire ?  :?
 

Twan

Membre
27 Septembre 2008
5 611
3
31
Lille
Peux tu créer un topic avec tous tes tutos plutot que d'ouvrir un sujet à chaque fois ? Merci.  :wink:
 

Vince_Ours

Membre
30 Mars 2014
58
0
35
Maisons-Alfort
Bonjour à toi Meletou !

Tout d'abord je tiens à te remercier pour tes tutos !!

Dis moi je me posais une question...  :lol: . Dans ton tuto concernant la camera externe je me demandais si il n'y avait pas moyen à l'aide d'un script de capturer l'image de cette caméra "externe" pour la projeter en direct sur une texture d'un objet. Comme pour faire un écran de surveillance. Car on peut modifier et créer une matière dans NL2 pour projeter un film sur la surface d'un objet. Je ne sais pas si c'est possible... ?