Annonce

>>> Bienvenue sur codelab! >>> Première visite ? >>> quelques mots sur codelab //// une carte des membres//// (apéros) codelab


#1 2012-05-29 19:48:44 Créer un logiciel

Malleat
membre
Date d'inscription: 2012-04-15
Messages: 148
Site web

Créer un logiciel



Bonjour a tous!

Je voulais savoir, selon vous, est-il possible de créer un logiciel, du genre un visualiseur de 3D.

MAIS (ça se complique) pas dans la fenêtre processing.

Exemple: Lancer le logiciel --------> ouvrir une 3D? OU ouvrir un fichier démo? ------> Ouverture de la 3D en plein écran (avec peasycam).

Selon vous, ça se gèrerais facile?

Je pense a pas mal d'entrée clavier et autre, mais je ne sais pas si l'on peut charger un fichier comme ça... ?


SITE WEB ->REVŒLUTION

Hors ligne

 

#2 2012-05-29 21:54:32 Re : Créer un logiciel

emoc
@#@*$
Lieu: Quimper
Date d'inscription: 2008-01-28
Messages: 1576
Site web

Re: Créer un logiciel



Salut,

Tu cherches à ouvrir une deuxième fenêtre? C'est possible, je n'ai jamais essayé, mais par exemple : http://forum.processing.org/topic/popup … new-window ou http://www.sojamo.de/files/code/ExtraWindowExample.txt

Hors ligne

 

#3 2012-05-30 10:24:53 Re : Créer un logiciel

Malleat
membre
Date d'inscription: 2012-04-15
Messages: 148
Site web

Re: Créer un logiciel



Ce serait plutôt pour charger une 3D dans un viewer (un peut bizarre).

Demander a un utilisateur ou est l'OBJ à charger par exemple... j'ai pas trouver de librairie permettant de faire ça...


SITE WEB ->REVŒLUTION

Hors ligne

 

#4 2012-05-30 10:51:22 Re : Créer un logiciel

nononononono
membre
Lieu: Toulouse
Date d'inscription: 2011-02-04
Messages: 614

Re: Créer un logiciel

Hors ligne

 

#5 2012-05-30 11:24:46 Re : Créer un logiciel

Malleat
membre
Date d'inscription: 2012-04-15
Messages: 148
Site web

Re: Créer un logiciel



Je connais saito objloader, Je parle de ce genre de fenêtre, c'est a dire ouvrir une 3D non pas avec processing, mais avec le programme créer par processing:


genre ça:


http://fr.wavosaur.com/aide/img/ouvrir-fichier-wavosaur.png


SITE WEB ->REVŒLUTION

Hors ligne

 

#6 2012-05-30 11:33:03 Re : Créer un logiciel

emoc
@#@*$
Lieu: Quimper
Date d'inscription: 2008-01-28
Messages: 1576
Site web

Re: Créer un logiciel



Alors, il faut que tu regardes ça : http://wiki.processing.org/w/Open_Files_through_a_GUI

Hors ligne

 

#7 2012-05-30 12:27:59 Re : Créer un logiciel

Malleat
membre
Date d'inscription: 2012-04-15
Messages: 148
Site web

Re: Créer un logiciel



Et pour lancer diverses applications, selon le bouton que l'on clique?

Par exemple la j'ai deux code, il s'agit d'une "démo" de ce que le logiciel peut afficher.

J'ai ceci pour la fenêtre comprenant le premier bouton (celui de chargement viendra en dessous):

import controlP5.*;

ControlP5 cp5;

int myColor = color(255);

int c1,c2;

float a,a1;


void setup() {
  size(400,600);
  noStroke();
  cp5 = new ControlP5(this);
  
  // create a new button with name 'buttonA'
  cp5.addButton("RESEAU 4D")
     .setValue(0)
     .setPosition(100,100)
     .setSize(200,19)
     ;
  


}

void draw() {
  background(myColor);
  myColor = lerpColor(c1,c2,a);
  
}

public void controlEvent(ControlEvent theEvent) {
  println(theEvent.getController().getName());
  a = 0;
}

// function colorA will receive changes from 
// controller with name colorA
public void colorA(int theValue) {
  println("a button event from colorA: "+theValue);
  c1 = c2;
  c2 = color(0,160,100);
}

Et ceci pour celle du programme à lancer quand l'on clique dessus:

import peasy.test.*;
import peasy.org.apache.commons.math.*;
import peasy.*;
import peasy.org.apache.commons.math.geometry.*;

import peasy.test.*;
import peasy.org.apache.commons.math.*;
import peasy.*;
import peasy.org.apache.commons.math.geometry.*;



import peasy.*;
 
 
int num = 500;
float RADIUS = 300;
float SCALE = 500.0;
 
int globKonexID = 0;
PeasyCam cam;
Neuron n[];
 
void setup(){
    size(1440,900,P3D);
    n = new Neuron[num];
    
    cam = new PeasyCam(this, 800);
    cam.setMinimumDistance(300);
    cam.setMaximumDistance(3000);
 
    cam = new PeasyCam(this, 800);
    cam.setMinimumDistance(300);
    cam.setMaximumDistance(3000);
 
    for(int i = 0;i<n.length;i++){
        n[i] = new Neuron(i);
    }
 
 
    for(int i = 0;i<n.length;i++){
        n[i].makeConnections();
    }
 
    noSmooth();
    stroke(1.0);
 
    for(int i = 0;i<n[0].k.length;i++)
        n[0].makeSignal(i);
 
}
 
void mousePressed(){
    if(mouseButton==RIGHT){
        for(int i = 0;i<n.length;i++){
            n[i].x = random(-width/2,width/2);
            n[i].y = random(-width/2,width/2);
            n[i].z = random(-width/2,width/2);
        }
 
        for(int i = 0;i<n.length;i++)
            n[i].makeConnections();
 
        for(int i = 0;i<n[0].sig.length;i++)
            n[0].makeSignal(i);
    }
}
 
void draw(){
    background(0);
 
    for(int i = 0;i<n.length;i++){
        n[i].draw();
    }
}
 
 
////////////////////////// >>
 
class Neuron{
    float x,y,z,radius,xx,yy,zz,val;
    int id;
    boolean imobile = false;
    Konexe k[] = new Konexe[0];
    Signal sig[] = new Signal[0];
 
 
    Neuron(int _id){
        xx = x = random(-width/2,width/2);
        yy = y = random(-width/2,width/2);
        zz = z = random(-width/2,width/2);
        id= _id;
        radius = RADIUS;
        val = 0;
        if(id==1)imobile = true;
    }
 
 
    void makeConnections(){
        k = new Konexe[0];
        sig = new Signal[0];
         
        for(int i = 0 ;i<n.length;i++){
            if(i!=id && dist(x,y,z,n[i].x,n[i].y,n[i].z) < radius){
                k = (Konexe[])expand(k,k.length+1);
                k[k.length-1] = new Konexe(id,i);
 
                sig = (Signal[])expand(sig,sig.length+1);
                sig[sig.length-1] = new Signal(k[sig.length-1]);
            }
        }
    }
 
    void makeSignal(int which){
        int i = which;
        sig[i].x = xx;
        sig[i].y = yy;
        sig[i].z = zz;
        sig[i].running = true;
    }
 
    void drawConnections(){
        for(int i = 0 ;i<k.length;i++){
            line(xx,yy,zz,n[k[i].B].xx,n[k[i].B].yy,n[k[i].B].zz);
        }
 
 
    }
 
    void draw(){
         
        xx += (x-xx) / 100.0;
        yy += (y-yy) / 100.0;
        zz += (z-zz) / 100.0;
 
        if(sig.length>0){
            for(int i = 0;i<sig.length;i+=1){
 
                if(sig[i].running){
                    if(sig[i].moving){
                        pushMatrix();
                        pushStyle();
                        //strokeWeight(3);
                        stroke(255,20);
                     
                        //line(sig[i].x,sig[i].y,sig[i].z,sig[i].lx,sig[i].ly,sig[i].lz);
                        translate(sig[i].x,sig[i].y,sig[i].z);
                        box(5);
                        popStyle();
                        popMatrix();
                    }
                    sig[i].step();
 
                }
 
            }
        }
 
        stroke(lerpColor(#FFFFFF,#33CCFF,norm(val,10,200)),200);
        drawConnections();
 
    }
 
 
 
 
 
}
 
////////////////////////// >>
 
class Konexe{
    int A,B,id;
    float weight = 1.5;
    Konexe(int _A,int _B){
        A = _A;
        B = _B;
        id = globKonexID++;
        weight = random(101,200)/SCALE;
    }
}
 
 
class Signal{
 
    Konexe base;
    int cyc = 0;
    float x,y,z,lx,ly,lz;
    float speed = 10.1;
 
    boolean running = false;
    boolean visible = true;
    boolean moving = false;
 
    int deadnum = 2000;
    int deadcount = 0;
 
    Signal(Konexe _base){
        deadnum = (int)random(2,40);
        base = _base;
        lx = x = n[base.A].x;
        ly = y = n[base.A].y;
        lz = z = n[base.A].z;
        speed *= base.weight;
    }
 
    void step(){
        running = true;
 
        if(abs(lx-x)>.1||abs(ly-y)>.1||abs(lz-z)>.1)
            moving = true;
        else
            moving = false;
 
        lx = x;
        ly = y;
        lz = z;
 
 
        if(!n[base.A].imobile){
            x += (n[base.B].xx-x) / speed;//(speed+(dist(n[base.A].x,n[base.A].y,n[base.B].x,n[base.B].y)+1)/100.0);
            y += (n[base.B].yy-y) / speed;//(speed+(dist(n[base.A].x,n[base.A].y,n[base.B].x,n[base.B].y)+1)/100.0);
            z += (n[base.B].zz-z) / speed;
        }
 
        n[base.A].val+=(0-n[base.A].val)/5000.0;
 
        if(dist(x,y,z,n[base.B].xx,n[base.B].yy,n[base.B].zz)<1.0){
 
            if(deadcount<0){
                deadcount = deadnum;
 
 
                //deadnum += (int)random(-1,1);
                //println("run "+base.A+" : "+base.B);
 
                running = false;
                for(int i = 0; i < n[base.B].k.length;i++){
                    if(!n[base.B].sig[i].running && base.A!=n[base.B].sig[i].base.B){
                        n[base.B].makeSignal(i);
                        n[base.B].sig[i].base.weight += (base.weight-n[base.B].sig[i].base.weight)/((dist(x,y,z,n[base.A].xx,n[base.A].yy,n[base.A].zz)+1.0)/200.0);
                    }
 
                }
 
 
                //base.weight = random(1001,3000) / 1000.0;
                if(n[base.A].id!=1){
                    n[base.A].xx+=((n[base.B].x-n[base.A].x)/1.1)*noise((frameCount+n[base.A].id)/18.0);;
                    n[base.A].yy+=((n[base.B].y-n[base.A].y)/1.1)*noise((frameCount+n[base.A].id)/17.0);
                    n[base.A].zz+=((n[base.B].z-n[base.A].z)/1.1)*noise((frameCount+n[base.A].id)/16.0);
 
 
 
                    n[base.A].xx-=((n[base.B].x-n[base.A].x)/1.1)*noise((frameCount+n[base.B].id)/18.2);;
                    n[base.A].yy-=((n[base.B].y-n[base.A].y)/1.1)*noise((frameCount+n[base.B].id)/17.2);
                    n[base.A].zz-=((n[base.B].z-n[base.A].z)/1.1)*noise((frameCount+n[base.B].id)/16.2);
                }
 
                lx = n[base.A].x;
                ly = n[base.A].y;
                lz = n[base.A].z;
 
                n[base.A].val+=(255-n[base.A].val)/10.0;
            }else{
 
                deadcount--;
            }
        }
    }
}

j'essais de mixer les codes pour le moment, mais je galère un peut. Vous avez des pistes (je vous donne les deux séparé, car les deux ensemble, j'ai l'impression que je suis en train de créer un vrais bordel là...).


SITE WEB ->REVŒLUTION

Hors ligne

 

#8 2012-05-31 10:14:52 Re : Créer un logiciel

Malleat
membre
Date d'inscription: 2012-04-15
Messages: 148
Site web

Re: Créer un logiciel



Ouai, j'oubliais, petite galère avec mon objloader (je dois avoir raté un truc bête... Mais j'ai un peut du mal là) :

import saito.objloader.*;

/**
filechooser taken from http://processinghacks.com/hacks:filechooser
@author Tom Carden
*/
 
import javax.swing.*; 
 OBJModel obj;
// set system look and feel 
 
try { 
  UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
} catch (Exception e) { 
  e.printStackTrace();  
 
} 
 
// create a file chooser 
final JFileChooser fc = new JFileChooser(); 
 
// in response to a button click: 
int returnVal = fc.showOpenDialog(this); 
 
if (returnVal == JFileChooser.APPROVE_OPTION) { 
  File file = fc.getSelectedFile(); 
  // see if it's an image 
  // (better to write a function and check for all supported extensions) 
  if (file.getName().endsWith("obj")) { 
    // load the image using the given file path

/////APPAREMENT CA VIENT DE LA :
    obj = new OBJModel(file.getPath());
   obj.debugMode(); 
    if (obj != null) { 
      // size the window and show the image 
      size(obj.width,obj.height,P3D); 
       
    } 
  } else { 
    // just print the contents to the console 
    // note: loadStrings can take a Java File Object too 
    String lines[] = loadStrings(file); 
    for (int i = 0; i < lines.length; i++) { 
      println(lines[i]);  
    } 
  } 
} else { 
  println("Open command cancelled by user."); 
}

SITE WEB ->REVŒLUTION

Hors ligne

 

#9 2012-06-06 10:45:15 Re : Créer un logiciel

Malleat
membre
Date d'inscription: 2012-04-15
Messages: 148
Site web

Re: Créer un logiciel



Je relance le message? Je patauge toujours, je n'ai pas pus contacter d'autres personne et suis un peut perdu :'(


SITE WEB ->REVŒLUTION

Hors ligne

 

#10 2012-06-10 19:46:41 Re : Créer un logiciel

Malleat
membre
Date d'inscription: 2012-04-15
Messages: 148
Site web

Re: Créer un logiciel



Heuuuuuu... J'ai dix jours pour montrer un peut d'avancement... sad


SITE WEB ->REVŒLUTION

Hors ligne

 

#11 2012-06-10 20:18:35 Re : Créer un logiciel

cgiles
membre
Lieu: Est de la France
Date d'inscription: 2005-05-25
Messages: 329

Re: Créer un logiciel



C'est ton projet d'étude ?

Hors ligne

 

#12 2012-06-10 21:21:58 Re : Créer un logiciel

Malleat
membre
Date d'inscription: 2012-04-15
Messages: 148
Site web

Re: Créer un logiciel



Yep, mais avant tout c'est aussi un projet personnel (que j'ai réussi a faire passer pour de l'étude), et je tiens vraiment a réussir à le développer (mais en école d'architecture je n'ai aucune véritable aide)...


SITE WEB ->REVŒLUTION

Hors ligne

 

#13 2012-06-14 16:53:07 Re : Créer un logiciel

Malleat
membre
Date d'inscription: 2012-04-15
Messages: 148
Site web

Re: Créer un logiciel



Sinon, il n'y a pas moyen de faire lancer un autre programme ou d'influer sur un void setup ou un void draw a partir d'un autre programme?
Je galère toujours ><


SITE WEB ->REVŒLUTION

Hors ligne

 

#14 2012-07-12 13:09:53 Re : Créer un logiciel

Malleat
membre
Date d'inscription: 2012-04-15
Messages: 148
Site web

Re: Créer un logiciel



Y a t-il quelqu'un (bonne vacances a ceux qui en ont au passage)?


SITE WEB ->REVŒLUTION

Hors ligne

 

#15 2012-07-28 05:58:47 Re : Créer un logiciel

fabrice54
membre
Date d'inscription: 2012-06-07
Messages: 242

Re: Créer un logiciel



bojour d'apres ce que j'ai compris tu veux choisir le programme ou veux demmarer il y a sur des logiciels l'instruction swicth ce qui permet de demmarer ton  programmes ou tu veux,je ne sais pas si ceci peut t'aider.
fabrice

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2024