|
From: <de...@us...> - 2009-10-11 19:10:19
|
Revision: 5228
http://fudaa.svn.sourceforge.net/fudaa/?rev=5228&view=rev
Author: deniger
Date: 2009-10-11 19:10:04 +0000 (Sun, 11 Oct 2009)
Log Message:
-----------
Modified Paths:
--------------
trunk/framework/ctulu-bu/pom.xml
trunk/framework/ctulu-common/pom.xml
trunk/framework/ctulu-fu/pom.xml
trunk/framework/ctulu-gis/pom.xml
trunk/framework/ctulu-ui/pom.xml
trunk/framework/ctulu-video/pom.xml
trunk/framework/dodico-common/pom.xml
trunk/framework/ebli-1d/pom.xml
trunk/framework/ebli-2d/pom.xml
trunk/framework/ebli-3d/pom.xml
trunk/framework/ebli-common/pom.xml
trunk/framework/ebli-graphe/pom.xml
trunk/framework/ebli-visuallibrary/pom.xml
trunk/framework/ebli-visuallibrary/src/main/java/org/fudaa/ebli/visuallibrary/actions/EbliWidgetActionDelete.java
trunk/framework/fudaa-common/pom.xml
trunk/framework/fudaa-common-courbe/pom.xml
trunk/framework/fudaa-common-save/pom.xml
trunk/framework/pom.xml
Added Paths:
-----------
trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/BLumiere.java
trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/BLumiereDirectionnelle.java
trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/BNuagePoints.java
trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/BObjet2D.java
trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/BTriangles.java
trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/BUnivers.java
trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/BVolume.java
trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/EbliFilleVue3D.java
trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/VolumePreferencesPanel.java
trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/ZVue3DController.java
trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/ZVue3DPanel.java
trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/ZVueAnimAdapter.java
trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/common/BControleAffichageTarget.java
trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/common/BControleLumiereTarget.java
trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/common/BGrilleAbstract.java
trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/common/BTextureTargetInterface.java
trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/common/BUniversInterface.java
trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/common/BVolumeAbstract.java
trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/common/GroupeInterface.java
trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/common/Objet3DInterface.java
trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/controles/BArbreVolume.java
trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/controles/BControleAffichage.java
trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/controles/BControleEchelle.java
trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/controles/BControleLumiere.java
trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/controles/BControleTexture.java
trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/controles/BControleVisible.java
trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/controles/BControleVolume.java
trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/controles/BMagnetoscope.java
trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/controles/BPas.java
trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/controles/BPosition.java
trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/controles/BSelecteurTexture.java
trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/controles/BUniversInteraction.java
trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/controles/BVolumeTransformation.java
trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/controles/TrajectoireCamera.java
trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/controles/TransformTypeIn.java
trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/controles/ZControleEchelle.java
trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/controles/ZControleLumiere.java
trunk/framework/ebli-3d/test.txt
Modified: trunk/framework/ctulu-bu/pom.xml
===================================================================
--- trunk/framework/ctulu-bu/pom.xml 2009-10-11 18:59:48 UTC (rev 5227)
+++ trunk/framework/ctulu-bu/pom.xml 2009-10-11 19:10:04 UTC (rev 5228)
@@ -1,12 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
- <artifactId>fudaa-framework</artifactId>
- <groupId>org.fudaa</groupId>
+ <groupId>org.fudaa.framework</groupId>
+ <artifactId>pom</artifactId>
<version>1.1-SNAPSHOT</version>
</parent>
- <groupId>${ctuluGroupId}</groupId>
+ <groupId>org.fudaa.framework.ctulu</groupId>
<artifactId>ctulu-bu</artifactId>
<name>ctulu-bu</name>
<dependencies>
Modified: trunk/framework/ctulu-common/pom.xml
===================================================================
--- trunk/framework/ctulu-common/pom.xml 2009-10-11 18:59:48 UTC (rev 5227)
+++ trunk/framework/ctulu-common/pom.xml 2009-10-11 19:10:04 UTC (rev 5228)
@@ -1,12 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
- <artifactId>fudaa-framework</artifactId>
- <groupId>org.fudaa</groupId>
+ <groupId>org.fudaa.framework</groupId>
+ <artifactId>pom</artifactId>
<version>1.1-SNAPSHOT</version>
</parent>
- <groupId>${ctuluGroupId}</groupId>
+ <groupId>org.fudaa.framework.ctulu</groupId>
<artifactId>ctulu-common</artifactId>
<name>ctulu-common</name>
<dependencies>
Modified: trunk/framework/ctulu-fu/pom.xml
===================================================================
--- trunk/framework/ctulu-fu/pom.xml 2009-10-11 18:59:48 UTC (rev 5227)
+++ trunk/framework/ctulu-fu/pom.xml 2009-10-11 19:10:04 UTC (rev 5228)
@@ -1,12 +1,12 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
- <groupId>org.fudaa</groupId>
- <artifactId>fudaa-framework</artifactId>
+ <groupId>org.fudaa.framework</groupId>
+ <artifactId>pom</artifactId>
<version>1.1-SNAPSHOT</version>
</parent>
- <groupId>${ctuluGroupId}</groupId>
+ <groupId>org.fudaa.framework.ctulu</groupId>
<artifactId>ctulu-fu</artifactId>
<packaging>jar</packaging>
<description>Les package de com.memoire non graphique</description>
Modified: trunk/framework/ctulu-gis/pom.xml
===================================================================
--- trunk/framework/ctulu-gis/pom.xml 2009-10-11 18:59:48 UTC (rev 5227)
+++ trunk/framework/ctulu-gis/pom.xml 2009-10-11 19:10:04 UTC (rev 5228)
@@ -1,12 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
- <artifactId>fudaa-framework</artifactId>
- <groupId>org.fudaa</groupId>
+ <groupId>org.fudaa.framework</groupId>
+ <artifactId>pom</artifactId>
<version>1.1-SNAPSHOT</version>
</parent>
- <groupId>${ctuluGroupId}</groupId>
+ <groupId>org.fudaa.framework.ctulu</groupId>
<artifactId>ctulu-gis</artifactId>
<name>ctulu-gis</name>
<dependencies>
Modified: trunk/framework/ctulu-ui/pom.xml
===================================================================
--- trunk/framework/ctulu-ui/pom.xml 2009-10-11 18:59:48 UTC (rev 5227)
+++ trunk/framework/ctulu-ui/pom.xml 2009-10-11 19:10:04 UTC (rev 5228)
@@ -1,12 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
- <artifactId>fudaa-framework</artifactId>
- <groupId>org.fudaa</groupId>
+ <groupId>org.fudaa.framework</groupId>
+ <artifactId>pom</artifactId>
<version>1.1-SNAPSHOT</version>
</parent>
- <groupId>${ctuluGroupId}</groupId>
+ <groupId>org.fudaa.framework.ctulu</groupId>
<artifactId>ctulu-ui</artifactId>
<name>ctulu-ui</name>
<dependencies>
Modified: trunk/framework/ctulu-video/pom.xml
===================================================================
--- trunk/framework/ctulu-video/pom.xml 2009-10-11 18:59:48 UTC (rev 5227)
+++ trunk/framework/ctulu-video/pom.xml 2009-10-11 19:10:04 UTC (rev 5228)
@@ -1,19 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
- <artifactId>fudaa-framework</artifactId>
- <groupId>org.fudaa</groupId>
+ <groupId>org.fudaa.framework</groupId>
+ <artifactId>pom</artifactId>
<version>1.1-SNAPSHOT</version>
</parent>
- <groupId>${ctuluGroupId}</groupId>
+ <groupId>org.fudaa.framework.ctulu</groupId>
<artifactId>ctulu-video</artifactId>
<name>ctulu-video</name>
<dependencies>
<dependency>
- <groupId>${ctuluGroupId}</groupId>
- <artifactId>ctulu-common</artifactId>
- </dependency>
+ <groupId>${ctuluGroupId}</groupId>
+ <artifactId>ctulu-common</artifactId>
+ </dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
Modified: trunk/framework/dodico-common/pom.xml
===================================================================
--- trunk/framework/dodico-common/pom.xml 2009-10-11 18:59:48 UTC (rev 5227)
+++ trunk/framework/dodico-common/pom.xml 2009-10-11 19:10:04 UTC (rev 5228)
@@ -1,12 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
- <artifactId>fudaa-framework</artifactId>
- <groupId>org.fudaa</groupId>
+ <groupId>org.fudaa.framework</groupId>
+ <artifactId>pom</artifactId>
<version>1.1-SNAPSHOT</version>
</parent>
- <groupId>${dodicoGroupId}</groupId>
+ <groupId>org.fudaa.framework.dodico</groupId>
<artifactId>dodico-common</artifactId>
<name>dodico-common</name>
<dependencies>
Modified: trunk/framework/ebli-1d/pom.xml
===================================================================
--- trunk/framework/ebli-1d/pom.xml 2009-10-11 18:59:48 UTC (rev 5227)
+++ trunk/framework/ebli-1d/pom.xml 2009-10-11 19:10:04 UTC (rev 5228)
@@ -1,12 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
- <artifactId>fudaa-framework</artifactId>
- <groupId>org.fudaa</groupId>
+ <groupId>org.fudaa.framework</groupId>
+ <artifactId>pom</artifactId>
<version>1.1-SNAPSHOT</version>
</parent>
- <groupId>${ebliGroupId}</groupId>
+ <groupId>org.fudaa.framework.ebli</groupId>
<artifactId>ebli-1d</artifactId>
<name>ebli-1d</name>
<dependencies>
Modified: trunk/framework/ebli-2d/pom.xml
===================================================================
--- trunk/framework/ebli-2d/pom.xml 2009-10-11 18:59:48 UTC (rev 5227)
+++ trunk/framework/ebli-2d/pom.xml 2009-10-11 19:10:04 UTC (rev 5228)
@@ -1,12 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
- <artifactId>fudaa-framework</artifactId>
- <groupId>org.fudaa</groupId>
+ <groupId>org.fudaa.framework</groupId>
+ <artifactId>pom</artifactId>
<version>1.1-SNAPSHOT</version>
</parent>
- <groupId>${ebliGroupId}</groupId>
+ <groupId>org.fudaa.framework.ebli</groupId>
<artifactId>ebli-2d</artifactId>
<name>ebli-2d</name>
<dependencies>
Modified: trunk/framework/ebli-3d/pom.xml
===================================================================
--- trunk/framework/ebli-3d/pom.xml 2009-10-11 18:59:48 UTC (rev 5227)
+++ trunk/framework/ebli-3d/pom.xml 2009-10-11 19:10:04 UTC (rev 5228)
@@ -1,12 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
- <artifactId>fudaa-framework</artifactId>
- <groupId>org.fudaa</groupId>
+ <groupId>org.fudaa.framework</groupId>
+ <artifactId>pom</artifactId>
<version>1.1-SNAPSHOT</version>
</parent>
- <groupId>${ebliGroupId}</groupId>
+ <groupId>org.fudaa.framework.ebli</groupId>
<artifactId>ebli-3d</artifactId>
<name>ebli-3d</name>
<dependencies>
Added: trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/BLumiere.java
===================================================================
--- trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/BLumiere.java (rev 0)
+++ trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/BLumiere.java 2009-10-11 19:10:04 UTC (rev 5228)
@@ -0,0 +1,156 @@
+/*
+ * @creation 1999-12-30
+ * @modification $Date: 2006-11-14 09:06:28 $
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
+ * @mail de...@fu...
+ */
+package org.fudaa.ebli.volume;
+
+import javax.media.j3d.BranchGroup;
+
+import org.fudaa.ebli.volume.common.GroupeInterface;
+import org.fudaa.ebli.volume.common.Objet3DInterface;
+
+/**
+ * @version $Revision: 1.15 $ $Date: 2006-11-14 09:06:28 $ by $Author: deniger $
+ * @author Christophe Delhorbe
+ */
+public abstract class BLumiere extends BranchGroup implements Objet3DInterface {
+ // l'ID de l'objet
+ protected int index_;
+ // son pere
+ protected GroupeInterface pere_;
+ // proprietes :
+ protected boolean visible_;
+ protected String nom_;
+
+ public BLumiere() {
+ nom_ = null;
+ pere_ = null;
+ index_ = 0;
+ visible_ = false;
+ // setCapability(BranchGroup.ALLOW_DETACH);
+ }
+
+ public boolean isFilaireEditable() {
+ return false;
+ }
+
+ public boolean isRapideEditable() {
+ return false;
+ }
+
+ /**
+ * Nomme le volume.
+ *
+ * @param _name le nom du volume
+ */
+ public void setName(final String _name) {
+ nom_ = _name;
+ }
+
+ /**
+ * Nom du volume.
+ *
+ * @return le nom du volume
+ */
+ public String getName() {
+ return nom_;
+ }
+
+ /**
+ * Renvoie l'indice de l'objet dans le groupe.
+ *
+ * @return index_ l'indice (entier)
+ */
+ public int getIndex() {
+ return index_;
+ }
+
+ /**
+ * Mutateur de la propri\xE9t\xE9 index.
+ *
+ * @param _index le nouvel indice (entier)
+ */
+ public void setIndex(final int _index) {
+ index_ = _index;
+ }
+
+ /**
+ * @return true si volume visible
+ */
+ public boolean isVisible() {
+ return visible_;
+ }
+
+ /**
+ * Indique si l'objet doit \xEAtre afficher rapidement.
+ *
+ * @return vrai si le mode rapide est selectionn\xE9 pour cet objet
+ */
+ public boolean isRapide() {
+ return false;
+ }
+
+ /**
+ * Affiche ou non l'objet sous forme rapide (boite...).
+ *
+ * @param _rapide true: le mode d'affichage rapide est selection\xE9
+ */
+ public void setRapide(final boolean _rapide) {}
+
+ /**
+ * Renvoie le groupe p\xE8re de l'objet.
+ *
+ * @return le groupe p\xE8re
+ */
+ public GroupeInterface getPere() {
+ return pere_;
+ }
+
+ /**
+ * Modifie le p\xE8re de l'objet (= le groupe auquel l'objet appartient).
+ *
+ * @param _pere le groupe p\xE8re
+ */
+ public void setPere(final GroupeInterface _pere) {
+ pere_ = _pere;
+ }
+
+ /**
+ * M\xE9thode qui modifie une propri\xE9t\xE9 de l'objet.
+ *
+ * @param _name : le nom de la propri\xE9t\xE9
+ * @param _value sa nouvelle valeur
+ */
+ public boolean setProperty(final String _name, final Object _value) {
+ return BVolume.setDefaultProperty(this, _name, _value);
+ }
+ boolean destructible_;
+
+ /**
+ * Indique si l'objet peut \xEAtre supprim\xE9 de la sc\xE8ne.
+ */
+ public boolean isDestructible() {
+ return destructible_;
+ }
+
+ /**
+ * Modifie l'enlevabilit\xE9 de l'objet.
+ *
+ * @param _destructible : vrai si l'objet peut \xEAtre d\xE9truit
+ */
+ public void setDestructible(final boolean _destructible) {
+ destructible_ = _destructible;
+ }
+
+ /**
+ * detruit l'objet (il est retir\xE9 de l'arbre).
+ */
+ public void detruire() {
+ if (isDestructible() && (pere_ != null)) {
+ pere_.remove(index_);
+ }
+ }
+}
Added: trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/BLumiereDirectionnelle.java
===================================================================
--- trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/BLumiereDirectionnelle.java (rev 0)
+++ trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/BLumiereDirectionnelle.java 2009-10-11 19:10:04 UTC (rev 5228)
@@ -0,0 +1,105 @@
+/*
+ * @creation 1999-12-30
+ * @modification $Date: 2006-11-20 08:40:15 $
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
+ * @mail de...@fu...
+ */
+package org.fudaa.ebli.volume;
+
+import java.awt.Color;
+
+import javax.media.j3d.BoundingSphere;
+import javax.media.j3d.Bounds;
+import javax.media.j3d.DirectionalLight;
+import javax.media.j3d.Light;
+import javax.media.j3d.Node;
+import javax.vecmath.Color3f;
+import javax.vecmath.Point3d;
+import javax.vecmath.Vector3f;
+
+import org.fudaa.ebli.volume.common.BControleLumiereTarget;
+
+/**
+ * @version $Revision: 1.10 $ $Date: 2006-11-20 08:40:15 $ by $Author: deniger $
+ * @author Christophe Delhorbe
+ */
+public class BLumiereDirectionnelle extends BLumiere implements BControleLumiereTarget {
+ DirectionalLight l_;
+ Vector3f direction_;
+ protected Color couleur_;
+ protected double intensite_ = 1;
+
+ public BLumiereDirectionnelle(final Vector3f _vecteur, final Color _couleur) {
+ couleur_ = _couleur;
+ direction_ = _vecteur;
+ l_ = new DirectionalLight(new Color3f(_couleur), _vecteur);
+ l_.setCapability(Light.ALLOW_STATE_WRITE);
+ l_.setCapability(Light.ALLOW_STATE_READ);
+ l_.setCapability(Light.ALLOW_COLOR_WRITE);
+ l_.setCapability(Light.ALLOW_COLOR_READ);
+ l_.setCapability(DirectionalLight.ALLOW_DIRECTION_WRITE);
+ l_.setCapability(DirectionalLight.ALLOW_DIRECTION_READ);
+ l_.setCapability(Node.ALLOW_BOUNDS_READ);
+ l_.setCapability(Node.ALLOW_BOUNDS_WRITE);
+ l_.setCapability(Light.ALLOW_INFLUENCING_BOUNDS_READ);
+ l_.setCapability(Light.ALLOW_INFLUENCING_BOUNDS_WRITE);
+ setCapability(ALLOW_AUTO_COMPUTE_BOUNDS_READ);
+ setCapability(ALLOW_AUTO_COMPUTE_BOUNDS_READ);
+ l_.setInfluencingBounds(new BoundingSphere(new Point3d(), 100));
+ for (int i = 18; i < 20; i++) {
+ l_.setCapability(i);
+ }
+ addChild(l_);
+ setName("Direction");
+ }
+
+ public void setBounds(final Bounds _b) {
+ l_.setInfluencingBounds(_b);
+ }
+
+ public BoundingSphere getLightBounds() {
+ return (BoundingSphere) l_.getInfluencingBounds();
+ }
+
+ public void setVisible(final boolean _visible) {
+ l_.setEnable(_visible);
+ visible_ = _visible;
+ }
+
+ public Vector3f getDirection() {
+ return direction_;
+ }
+
+ public void setDirection(final Vector3f _direction) {
+ try {
+ direction_ = _direction;
+ l_.setDirection(direction_);
+ } catch (final Exception ex) {}
+ }
+
+ public Color getCouleur() {
+ return couleur_;
+ }
+
+ public void setCouleur(final Color _couleur) {
+ couleur_ = _couleur;
+ l_.setColor(new Color3f(couleur_));
+ }
+
+ public void setIntensite(final double _intensite) {
+ intensite_ = _intensite;
+ float red, green, blue;
+ red = (float) (couleur_.getRed() * intensite_ / 255);
+ green = (float) (couleur_.getGreen() * intensite_ / 255);
+ blue = (float) (couleur_.getBlue() * intensite_ / 255);
+ try {
+ l_.setColor(new Color3f(red, green, blue));
+ } catch (final Exception ex) {}
+ }
+
+ public double getIntensite() {
+ return intensite_;
+ }
+
+}
Added: trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/BNuagePoints.java
===================================================================
--- trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/BNuagePoints.java (rev 0)
+++ trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/BNuagePoints.java 2009-10-11 19:10:04 UTC (rev 5228)
@@ -0,0 +1,78 @@
+/*
+ * @file BNuagePoints.java
+ * @creation 1999-11-29
+ * @modification $Date: 2006-07-13 13:35:48 $
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
+ * @mail de...@fu...
+ */
+package org.fudaa.ebli.volume;
+
+import javax.media.j3d.*;
+import javax.vecmath.Color3f;
+import javax.vecmath.Point3d;
+import javax.vecmath.Vector3d;
+
+/**
+ * @version $Revision: 1.13 $ $Date: 2006-07-13 13:35:48 $ by $Author: deniger $
+ * @author Christophe Delhorbe
+ */
+public class BNuagePoints extends BGrille {
+ private int npoints_;
+
+ public BNuagePoints() {
+ super();
+ npoints_ = 0;
+ }
+
+ public BNuagePoints(final String _s) {
+ super(_s);
+ npoints_ = 0;
+ }
+
+ public void setGeometrie(final Point3d[] _points) {
+ /* for (int i = 0; i < _points.length; i++) {
+ _points[i].x = _points[i].x / ParametresVolumes.ECHELLE;
+ _points[i].y = _points[i].y / ParametresVolumes.ECHELLE;
+ _points[i].z = _points[i].z / ParametresVolumes.ECHELLE;
+ // System.out.println("Point "+points[i]);
+ }*/
+ bbox_=new BoundingBox();
+ bbox_.combine(_points);
+ final Point3d low = new Point3d();
+ final Point3d up = new Point3d();
+ bbox_.getLower(low);
+ bbox_.getUpper(up);
+ npoints_ = _points.length;
+ final PointArray pointarray = new PointArray(npoints_, GeometryArray.COORDINATES | GeometryArray.COLOR_3);
+ pointarray.setCoordinates(0, _points);
+ for (int i = 0; i < npoints_; i++) {
+ pointarray.setColor(i, new Color3f(1f, 1f, 1f));
+ }
+ pointarray.setCapability(GeometryArray.ALLOW_COLOR_READ);
+ pointarray.setCapability(GeometryArray.ALLOW_COLOR_WRITE);
+ shape_.setGeometry(pointarray);
+ final PolygonAttributes pa = new PolygonAttributes();
+ pa.setCapability(PolygonAttributes.ALLOW_MODE_READ);
+ pa.setCapability(PolygonAttributes.ALLOW_MODE_WRITE);
+ pa.setPolygonMode(PolygonAttributes.POLYGON_LINE);
+ pa.setCullFace(PolygonAttributes.CULL_NONE);
+ pa.setBackFaceNormalFlip(true);
+ final Appearance ap = new Appearance();
+ ap.setPolygonAttributes(pa);
+ boiteEnglobante_ = new com.sun.j3d.utils.geometry.Box((float) (up.x - low.x) / 2, (float) (up.y - low.y) / 2,
+ (float) (up.z - low.z) / 2, ap);
+ final TransformGroup bTg = new TransformGroup();
+ final Transform3D t3d = new Transform3D();
+ t3d.set(new Vector3d((up.x - low.x) / 2, (float) (up.y - low.y) / 2, -(float) (up.z - low.z) / 2));
+ bTg.setTransform(t3d);
+ bTg.addChild(boiteEnglobante_);
+ switch_.addChild(bTg);
+ /*for (int i = 0; i < _points.length; i++) {
+ _points[i].x = _points[i].x * ParametresVolumes.ECHELLE;
+ _points[i].y = _points[i].y * ParametresVolumes.ECHELLE;
+ _points[i].z = _points[i].z * ParametresVolumes.ECHELLE;
+ // System.out.println("Point "+points[i]);
+ }*/
+ }
+}
Added: trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/BObjet2D.java
===================================================================
--- trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/BObjet2D.java (rev 0)
+++ trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/BObjet2D.java 2009-10-11 19:10:04 UTC (rev 5228)
@@ -0,0 +1,140 @@
+/*
+ * @creation 1999-12-30
+ * @modification $Date: 2006-11-14 09:06:29 $
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
+ * @mail de...@fu...
+ */
+package org.fudaa.ebli.volume;
+
+import java.awt.Canvas;
+import java.beans.PropertyChangeListener;
+import java.lang.reflect.Method;
+
+import org.fudaa.ebli.volume.common.GroupeInterface;
+import org.fudaa.ebli.volume.common.Objet3DInterface;
+
+/**
+ * @version $Revision: 1.13 $ $Date: 2006-11-14 09:06:29 $ by $Author: deniger $
+ * @author Christophe Delhorbe
+ */
+public abstract class BObjet2D extends Canvas implements PropertyChangeListener, Objet3DInterface {
+ private int index_;
+ private String nom_;
+ private GroupeInterface pere_;
+ private boolean rapide_;
+
+ /**
+ * Nomme le volume.
+ *
+ * @param _nom le nouveau nom du volume
+ */
+ public void setName(final String _nom) {
+ nom_ = _nom;
+ }
+
+ public boolean isFilaireEditable() {
+ return true;
+ }
+
+ public boolean isRapideEditable() {
+ return true;
+ }
+
+ /**
+ * Renvoie le nom du volume.
+ *
+ * @return le nom du volume
+ */
+ public String getName() {
+ return nom_;
+ }
+
+ /**
+ * Renvoie l'indice de l'objet dans le groupe.
+ *
+ * @return l'indice
+ */
+ public int getIndex() {
+ return index_;
+ }
+
+ /**
+ * Modifie l'indice de l'objet dans le groupe.
+ *
+ * @param _index le nouvel indice
+ */
+ public void setIndex(final int _index) {
+ index_ = _index;
+ }
+
+ public boolean isRapide() {
+ return rapide_;
+ }
+
+ public void setRapide(final boolean _rapide) {
+ rapide_ = _rapide;
+ }
+
+ public GroupeInterface getPere() {
+ return pere_;
+ }
+
+ public void setPere(final GroupeInterface _pere) {
+ pere_ = _pere;
+ }
+
+ public boolean setProperty(final String _name, final Object _value) {
+ boolean res = false;
+ try {
+ final String n = "set" + _name.substring(0, 1).toUpperCase() + _name.substring(1);
+ Class z = _value.getClass();
+ try {
+ z = (Class) (z.getField("TYPE").get(z));
+ } catch (final Exception ey) {}
+ Class[] c = null;
+ Method m = null;
+ do {
+ c = new Class[] { z };
+ try {
+ m = getClass().getMethod(n, c);
+ } catch (final Exception ey) {}
+ z = z.getSuperclass();
+ } while ((m == null) && (z != null));
+ final Object[] o = new Object[] { _value };
+ if (m != null) {
+ m.invoke(this, o);
+ res = true;
+ }
+ } catch (final Exception ex) {}
+ return res;
+ }
+ private boolean destructible_;
+
+ /**
+ * Indique si l'objet peut etre supprime de la scene.
+ *
+ * @return vrai si l'objet peut etre detruit
+ */
+ public boolean isDestructible() {
+ return destructible_;
+ }
+
+ /**
+ * Modifie le caractere suppressible de l'objet.
+ *
+ * @param _destructible indique si l'objet peut etre detruit
+ */
+ public void setDestructible(final boolean _destructible) {
+ destructible_ = _destructible;
+ }
+
+ /**
+ * Detruit l'objet. Il est retire de l'arbre.
+ */
+ public void detruire() {
+ if (isDestructible() && (pere_ != null)) {
+ pere_.remove(index_);
+ }
+ }
+}
Added: trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/BTriangles.java
===================================================================
--- trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/BTriangles.java (rev 0)
+++ trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/BTriangles.java 2009-10-11 19:10:04 UTC (rev 5228)
@@ -0,0 +1,126 @@
+/*
+ * @creation 2000-02-04
+ * @modification $Date: 2006-07-13 13:35:48 $
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
+ * @mail de...@fu...
+ */
+package org.fudaa.ebli.volume;
+import java.awt.Color;
+
+import javax.media.j3d.*;
+import javax.vecmath.Color3f;
+import javax.vecmath.Color4f;
+import javax.vecmath.Point3d;
+import javax.vecmath.Point3f;
+import javax.vecmath.Vector3d;
+/**
+ * @version $Revision: 1.12 $ $Date: 2006-07-13 13:35:48 $ by $Author: deniger $
+ * @author Christophe Delhorbe
+ */
+public class BTriangles extends BGrille {
+/* private int npoints_;
+ private TriangleArray geometrie_;*/
+ public BTriangles() {
+ super();
+ /*npoints_= 0;
+ geometrie_= null;*/
+ }
+ public BTriangles(final String _s) {
+ super(_s);
+/* npoints_= 0;*/
+ }
+ public void setGeometrie(final TriangleArray _geometrie) {
+ _geometrie.setCapability(Geometry.ALLOW_INTERSECT);
+ _geometrie.setCapability(GeometryArray.ALLOW_COLOR_READ);
+ _geometrie.setCapability(GeometryArray.ALLOW_COLOR_WRITE);
+ _geometrie.setCapability(GeometryArray.ALLOW_COUNT_READ);
+ _geometrie.setCapability(GeometryArray.ALLOW_COORDINATE_READ);
+ _geometrie.setCapability(GeometryArray.ALLOW_COORDINATE_WRITE);
+// geometrie_= _geometrie;
+ shape_.setGeometry(_geometrie);
+ calculeBBox();
+ final Point3d low= new Point3d();
+ final Point3d up= new Point3d();
+ bbox_.getLower(low);
+ bbox_.getUpper(up);
+ // Appearance ap=shape_.getAppearance();
+ final PolygonAttributes pa= new PolygonAttributes();
+ pa.setCapability(PolygonAttributes.ALLOW_MODE_READ);
+ pa.setCapability(PolygonAttributes.ALLOW_MODE_WRITE);
+ pa.setPolygonMode(PolygonAttributes.POLYGON_LINE);
+ pa.setCullFace(PolygonAttributes.CULL_NONE);
+ pa.setBackFaceNormalFlip(true);
+ final ColoringAttributes ca= new ColoringAttributes();
+ ca.setColor(new Color3f(1f, 0f, 0f));
+ final Appearance ap= new Appearance();
+ ap.setPolygonAttributes(pa);
+ ap.setColoringAttributes(ca);
+ // ap.getPolygonAttributes().setPolygonMode(PolygonAttributes.POLYGON_LINE);
+ boiteEnglobante_=
+ new com.sun.j3d.utils.geometry.Box(
+ (float) (up.x - low.x) / 2,
+ (float) (up.y - low.y) / 2,
+ (float) (up.z - low.z) / 2,
+ ap);
+ final TransformGroup bTg= new TransformGroup();
+ final Transform3D t3d= new Transform3D();
+ t3d.set(
+ new Vector3d((low.x + up.x) / 2, (low.y + up.y) / 2, (low.z + up.z) / 2));
+ bTg.setTransform(t3d);
+ bTg.addChild(boiteEnglobante_);
+ switch_.addChild(bTg);
+ // centre();
+ }
+ public void setGeometrie(final int _nbNds, final Point3d[] _noeuds) {
+ final Color[] c= new Color[_nbNds];
+ for (int i= 0; i < _nbNds; i++) {
+ c[i]= Color.white;
+ }
+ setGeometrie(_nbNds, _noeuds, c);
+ }
+ public void setGeometrie(final int _nbNds, final Point3d[] _noeuds, final Color[] _c) {
+ /*for (int i= 0; i < _nbNds; i++) {
+ _noeuds[i].x= _noeuds[i].x / ParametresVolumes.ECHELLE;
+ _noeuds[i].y= _noeuds[i].y / ParametresVolumes.ECHELLE;
+ _noeuds[i].z= _noeuds[i].z / ParametresVolumes.ECHELLE;
+ }*/
+ bbox_=new BoundingBox();
+ bbox_.combine(_noeuds);
+ final Point3f[] texpoints= new Point3f[_nbNds];
+ for (int i= 0; i < _nbNds; i++) {
+ texpoints[i]=
+ new Point3f(
+ (float) ((_noeuds[i].x + getBoite().o_.x_)
+ / (getBoite().e_.x_ - getBoite().o_.x_)),
+ (float) ((_noeuds[i].y + getBoite().o_.y_)
+ / (getBoite().e_.y_ - getBoite().o_.y_)),
+ (float)_noeuds[i].z);
+ }
+ /* System.out.println("Generation des normales...");
+ GeometryInfo geo=new GeometryInfo(GeometryInfo.TRIANGLE_ARRAY);
+ geo.setCoordinates(noeuds);
+ new NormalGenerator().generateNormals(geo);
+ System.out.println("...OK!");
+ */
+ final TriangleArray ta=
+ new TriangleArray(
+ _nbNds,
+ GeometryArray.COORDINATES | GeometryArray.COLOR_4 // |TriangleArray.NORMALS
+ | GeometryArray.TEXTURE_COORDINATE_3);
+ final Color4f[] couleurs= new Color4f[_nbNds];
+ for (int i= 0; i < _nbNds; i++) {
+ couleurs[i]=
+ new Color4f(
+ (float)_c[i].getRed() / 255,
+ (float)_c[i].getGreen() / 255,
+ (float)_c[i].getBlue() / 255,
+ (float)_c[i].getAlpha() / 255);
+ }
+ ta.setCoordinates(0, _noeuds);
+ // ta.setNormals(0,geo.getNormals());
+ ta.setColors(0, couleurs);
+ ta.setTextureCoordinates(0, texpoints);
+ setGeometrie(ta);
+ }
+}
Added: trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/BUnivers.java
===================================================================
--- trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/BUnivers.java (rev 0)
+++ trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/BUnivers.java 2009-10-11 19:10:04 UTC (rev 5228)
@@ -0,0 +1,641 @@
+/*
+ * @creation 11 mai 2006
+ * @modification $Date: 2007-05-22 14:19:03 $
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
+ * @mail de...@fu...
+ */
+package org.fudaa.ebli.volume;
+
+import java.awt.Color;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import java.util.Enumeration;
+import java.util.List;
+
+import javax.media.j3d.*;
+import javax.vecmath.AxisAngle4d;
+import javax.vecmath.Color3f;
+import javax.vecmath.Point3d;
+import javax.vecmath.Vector3d;
+
+import org.fudaa.ebli.commun.EbliLib;
+import org.fudaa.ebli.geometrie.GrBoite;
+import org.fudaa.ebli.volume.common.BUniversInterface;
+
+/**
+ * @author fred deniger
+ * @version $Id: BUnivers.java,v 1.22 2007-05-22 14:19:03 deniger Exp $
+ */
+public class BUnivers extends VirtualUniverse implements BUniversInterface {
+
+ BCanvas3D canvas_;
+
+ class TimerListener implements ActionListener {
+ long time_ = System.currentTimeMillis();
+
+ public void actionPerformed(final ActionEvent _evt) {
+ canvas_.stopRenderer();
+ final List v = BUnivers.this.volumes_.getTousEnfants();
+ for (int idx = 0; idx < v.size(); idx++) {
+ ((BVolume) v.get(idx)).actualise(time_ - System.currentTimeMillis());
+ }
+ canvas_.startRenderer();
+ }
+ }
+
+ // trois constantes pour definir les axes de transformation
+ public final static int X = 0;
+
+ public final static int Y = 1;
+ public final static int Z = 2;
+
+ // le pere de tous les groupes
+ private BGroupeStandard groupe_;
+ // le pere de tous les objets : non private pour etre acceder depuis un thread sans artifact
+ // le pere de toutes les lumieres
+ // Position de la camera, pour affichage
+ private Vector3d position_;
+ private javax.swing.Timer timer_;
+ private TransformGroup transformU_;
+ // la vue en cours
+ private int vue_;
+ // le fond
+ // les quatre vues
+ private Transform3D[] vues_;
+ Background background_;
+ BGroupeLumiere lumieres_;
+ PropertyChangeSupport support_;
+ Locale locale_;
+
+ BGroupeVolume volumes_;
+
+ public BUnivers() {
+ this(new BCanvas3D(null));
+ }
+
+ public BUnivers(final BCanvas3D _canvas) {
+ canvas_ = _canvas;
+ locale_ = new Locale(this);
+ final ViewPlatform camera = new ViewPlatform();
+ final BranchGroup viewGroup = new BranchGroup();
+ final TransformGroup viewTg = new TransformGroup();
+ viewTg.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
+ viewTg.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
+ viewTg.setCapability(Node.ALLOW_LOCAL_TO_VWORLD_READ);
+ viewTg.addChild(camera);
+ viewGroup.addChild(viewTg);
+
+ final PhysicalBody body = new PhysicalBody();
+ final PhysicalEnvironment env = new PhysicalEnvironment();
+
+ final View view = new View();
+ view.setPhysicalBody(body);
+ view.setPhysicalEnvironment(env);
+ view.setBackClipDistance(100);
+ view.setFrontClipDistance(.1);
+ view.addCanvas3D(canvas_);
+ view.attachViewPlatform(camera);
+ transformU_ = viewTg;
+ position_ = new Vector3d();
+ viewGroup.setCapability(BranchGroup.ALLOW_DETACH);
+ locale_.addBranchGraph(viewGroup);
+ }
+
+ private void buildFond(Color3f _c) {
+ if (background_ == null) {
+ background_ = _c == null ? new Background(0F, 0F, 0F) : new Background(_c);
+ background_.setCapability(Background.ALLOW_COLOR_WRITE);
+ background_.setCapability(Background.ALLOW_COLOR_READ);
+ background_.setCapability(Background.ALLOW_APPLICATION_BOUNDS_READ);
+ background_.setCapability(Background.ALLOW_APPLICATION_BOUNDS_WRITE);
+ // background_.setApplicationBounds(new BoundingSphere(new Point3d(0, 0, 0), 1E12));
+ background_.setBoundsAutoCompute(true);
+
+ final BranchGroup fond = new BranchGroup();
+ fond.addChild(background_);
+ fond.setCapability(BranchGroup.ALLOW_DETACH);
+ addBranchGraph(fond);
+ }
+ }
+
+ /**
+ * Ajoute une Branche \xE0 l'arbre de la scene, apres l'avoir compil\xE9e.
+ *
+ * @param _bg BranchGroup \xE0 ajouter
+ */
+ public void addBranchGraph(final BranchGroup _bg) {
+ if (!_bg.isCompiled()) {
+ _bg.compile();
+ }
+
+ locale_.addBranchGraph(_bg);
+ }
+
+ public void addObjet(final BVolume _v) {
+ volumes_.add(_v);
+ }
+
+ public void addPropertyChangeListener(final PropertyChangeListener _l) {
+ if (support_ == null) {
+ support_ = new PropertyChangeSupport(this);
+ }
+ support_.addPropertyChangeListener(_l);
+ }
+
+ public void addPropertyChangeListener(final String _propr, final PropertyChangeListener _l) {
+ if (support_ == null) {
+ support_ = new PropertyChangeSupport(this);
+ }
+ support_.addPropertyChangeListener(_propr, _l);
+ }
+
+ /**
+ * met en route ou arrete le timer.
+ */
+ public void animate(final boolean _b) {
+ if (_b) {
+ if (timer_ == null) {
+ timer_ = new javax.swing.Timer(100, new TimerListener());
+ }
+ timer_.start();
+ } else if (timer_ != null) {
+ timer_.stop();
+ }
+ }
+
+ /**
+ * detruit le groupe d'objet racine. A modifier par la suite: essaie de contourner les bugs de Java3D. Voir le site
+ * http://wiki.java.net/bin/view/Javadesktop/Java3DApplicationDevelopment#Releasing_Canvas3D_View_and_Virt
+ */
+ public void destroy() {
+ for (final Enumeration e = getLocale().getAllBranchGraphs(); e.hasMoreElements();) {
+ ((BranchGroup) e.nextElement()).detach();
+ }
+ BranchGroup emptyGroup = new BranchGroup();
+ emptyGroup.setCapability(BranchGroup.ALLOW_DETACH);
+ locale_.addBranchGraph(emptyGroup);
+ locale_.removeBranchGraph(emptyGroup);
+ emptyGroup = null;
+ try {
+ getCanvas3D().stopRenderer();
+ getCanvas3D().setVisible(false);
+ try {
+ getCanvas3D().setOffScreenBuffer(null);
+ } catch (final RuntimeException _evt) {
+
+ }
+ final View view = getCanvas3D().getView();
+ view.removeAllCanvas3Ds();
+ try {
+ view.attachViewPlatform(null);
+ } catch (final RuntimeException _evt) {
+
+ }
+ groupe_.detruire();
+
+ removeAllLocales();
+ com.sun.j3d.utils.universe.Viewer.clearViewerMap();
+ } catch (final RuntimeException _evt) {
+
+ }
+ }
+
+ public void freeze(final boolean _b) {
+ getCanvas3D().freeze(_b);
+ }
+
+ public BCanvas3D getCanvas3D() {
+ return canvas_;
+ }
+
+ public TransformGroup getObjectTransformGroup() {
+ return volumes_.getTransformGroup();
+ }
+
+ /**
+ * Renvoie l'objet racine de la scene.
+ *
+ * @return le p\xE8re de tous les objets.
+ */
+ public BGroupeStandard getRoot() {
+ return groupe_;
+ }
+
+ /**
+ * Renvoie tous les volumes de la scene (descends dans les groupes de volumes).
+ *
+ * @return vecteur contenant tous les volumes.
+ */
+ public List getTousEnfants() {
+ return groupe_.getTousEnfants();
+ }
+
+ public TransformGroup getTransformGroup() {
+ return transformU_;
+ }
+
+ /**
+ * renvoie la position et l'orientation de la camera.
+ */
+ public Transform3D[] getUniversTransforms() {
+ final Transform3D[] t = new Transform3D[2];
+ t[0] = new Transform3D();
+ transformU_.getTransform(t[0]);
+ t[1] = new Transform3D();
+ volumes_.getTransformGroup().getTransform(t[1]);
+ return t;
+ }
+
+ public int getVue() {
+ return vue_;
+ }
+
+ public final static int SUD = 0;
+ public final static int EST = 1;
+ public final static int NORD = 2;
+ public final static int OUEST = 3;
+ public final static int DESSUS = 4;
+
+ public final static String[] getVues() {
+ return new String[] { EbliLib.getS("Sud"), EbliLib.getS("Est"), EbliLib.getS("Nord"), EbliLib.getS("Ouest"),
+ EbliLib.getS("Dessus") };
+ }
+
+ double zmid_;
+
+ private void updateFond(GrBoite _boite) {
+ buildFond(null);
+ if (_boite == null) return;
+ double maxDist = Math.max(Math.max(_boite.getDeltaX(), _boite.getDeltaY()), _boite.getDeltaZ());
+ background_.setApplicationBounds(new BoundingSphere(new Point3d(_boite.getMidX(), _boite.getMidY(), _boite
+ .getMidZ()), maxDist * 20));
+ }
+
+ public void init() {
+ if (vues_ == null) {
+ vues_ = new Transform3D[5];
+ }
+ for (int idx = 0; idx < vues_.length; idx++) {
+ vues_[idx] = new Transform3D();
+ }
+ // on cree une nouvelle boite.
+ final GrBoite boite = volumes_.getBoite();
+ // on calcule les future coordonn\xE9es de la camera.
+ final double midX = boite.getMidX();
+ final double deltaX = boite.getDeltaX();
+ final double midY = boite.getMidY();
+ zmid_ = boite.getMidZ();
+ final double deltaY = boite.getDeltaY();
+ updateFond(boite);
+
+ volumes_.getTransformGroup().setTransform(new Transform3D());
+
+ // l'angle de vision
+ final double angleCamera = getCanvas3D().getView().getFieldOfView();
+ final double maxL = Math.max(deltaX, deltaY);
+
+ final double z = 0.5 * maxL / Math.tan(angleCamera / 2) + (boite.e_.z_ * echelle_);
+ // on suppose qu'une \xE9chelle de 20 est le max pour z
+ final double zForClip = 0.5 * maxL / Math.tan(angleCamera / 2) + (boite.e_.z_ * echelle_ * 20);
+ final double backClip = Math.hypot(maxL , zForClip);
+ getCanvas3D().getView().setBackClipDistance(Math.abs(backClip));
+ // conseille par la javadoc de java3D
+ getCanvas3D().getView().setFrontClipDistance(backClip / 100);
+ // getCanvas3D().getView().setFrontClipDistance(Math.abs(backClip)/4000);
+ // L'angle pour la vue perspective
+ // final double anglePersp = Math.toRadians(50);
+ // VUE SUD
+ // on positionne en y pour respecte l'angle de la perspective et
+ // et la distance du milieu de la scene
+ // on se place en bas de la scene : nord
+ /*******************************************************************************************************************
+ * <pre>
+ * A
+ * |\ E
+ * | \ |
+ * | \ |
+ * |_ _\|_________________________________
+ * B C D
+ * yMoins deltaY/2
+ * </pre>
+ ******************************************************************************************************************/
+ // l'angle CAD est l'angle de la camera
+ // l'angle BAC est alpha1
+ // l'angle CDA est b\xE9ta
+ // AED sont align\xE9s
+ // BCD sont a l'attitude zmin
+ // ||EC|| vaut deltaZ
+ // ||AC||=dminForX
+ // la camera se trouve en A et on veut quelle soit au dessus du zmax donc ||EC||=deltaZ et que l'on voit les bords
+ // du projet: donc AC=dminForX.
+ // dminForX =distance entre le milieu de la scene et la camera
+ // calcule afin que l'on puisse voir les bords des X
+ double ac = deltaX / (2 * Math.tan(angleCamera / 2));
+
+ // double beta = Math.atan(boite.getDeltaZ() / deltaY);
+ final double alpha1 = Math.toRadians(70);
+ // puis pour la boite
+ ac += boite.getDeltaZ() / Math.cos(alpha1);
+ double yMoins = Math.sin(alpha1) * ac;
+
+ double yA = boite.o_.y_ - yMoins;
+ double zA = (boite.o_.z_ * echelle_) + (Math.cos(alpha1) * ac);
+
+ // on peut calculer le z qui se place au milieu des z et qui prend en compte
+ // l'angle de la perspective et la distance par rapport au milieu
+
+ Transform3D t3d2;
+ // angle pour le faire regarder vers le bas
+ // SUD
+ // transformU_.getTransform(vues_[SUD]);
+ double alphaCam = alpha1 + angleCamera / 4;
+ vues_[SUD].setTranslation(new Vector3d(midX, yA/* + z / 4 */, zA));
+ vues_[SUD].setRotation(new AxisAngle4d(1, 0, 0, alphaCam));
+ // pour le nord on passe de l'autre cote
+ yA = boite.e_.y_ + yMoins;
+ vues_[NORD].setTranslation(new Vector3d(midX, yA/* + z / 4 */, zA));
+ vues_[NORD].setRotation(new AxisAngle4d(1, 0, 0, -alphaCam));
+ t3d2 = new Transform3D();
+ // oblige pour remettre la cam\xE9ra dans le bon sens
+ t3d2.setRotation(new AxisAngle4d(0, 0, 1, Math.PI));
+ vues_[NORD].mul(t3d2);
+
+ // DESSUS simple ....
+ vues_[DESSUS].set(new Vector3d(midX, midY, z));
+
+ // EST, OUEST:meme combat que nord sud
+ // dans ce cas, il suffit de tourner la camera de + ou - pi/2 selon Z
+ // pour l'est et l'ouest
+ ac = deltaY / (2 * Math.tan(angleCamera / 2));
+ ac += boite.getDeltaZ() / Math.cos(alpha1);
+ // beta = Math.atan(boite.getDeltaZ() / (deltaX / 2));
+ // alpha1 = Math.PI / 2 - beta - angleCamera;
+ yMoins = Math.sin(alpha1) * ac;
+ double xA = boite.e_.x_ + yMoins;
+ zA = (boite.o_.z_ * echelle_) + Math.cos(alpha1) * ac;
+ alphaCam = alpha1 + angleCamera / 2;
+ vues_[EST].setTranslation(new Vector3d(xA, midY, zA));
+ vues_[EST].setRotation(new AxisAngle4d(0, 0, 1, Math.PI / 2));
+ t3d2 = new Transform3D();
+ t3d2.setRotation(new AxisAngle4d(1, 0, 0, alphaCam));
+ vues_[EST].mul(t3d2);
+ xA = boite.o_.x_ - yMoins;
+ vues_[OUEST].setTranslation(new Vector3d(xA, midY, zA));
+ vues_[OUEST].setRotation(new AxisAngle4d(0, 0, 1, -Math.PI / 2));
+ t3d2 = new Transform3D();
+ t3d2.setRotation(new AxisAngle4d(1, 0, 0, alphaCam));
+ vues_[OUEST].mul(t3d2);
+
+ transformU_.setTransform(getCurrentCamera());
+ // vues_[3].setRotation(new AxisAngle4d(1,0,0,Math.PI/2));
+ }
+
+ /**
+ * Tourne les objets sur un des axes d'origine.
+ *
+ * @param _axe axe de rotation (X,Y ou Z)
+ * @param _valeur angle, en radians
+ */
+ public void orbital(final int _axe, final double _valeur) {
+ // on procede comme pour la translation sauf que la transformation est
+ // appliqu\xE9e \xE0 objets_ (pere de tous les objets) plutot qu'a la camera.
+ final Transform3D t3d = new Transform3D();
+ volumes_.getTransformGroup().getTransform(t3d);
+ final Transform3D t3d2 = new Transform3D();
+ AxisAngle4d v = new AxisAngle4d();
+ switch (_axe) {
+ case X:
+ v = new AxisAngle4d(1, 0, 0, _valeur);
+ break;
+ // penser que la camera a ete tourn\xE9 de PI/2 suivant l'axe X -> echange des axes Y et Z
+ case Y:
+ v = new AxisAngle4d(0, 0, -1, _valeur);
+ break;
+ case Z:
+ v = new AxisAngle4d(0, -1, 0, _valeur);
+ break;
+ default:
+ }
+ t3d2.setRotation(v);
+ // on applique cette transformation AVANT les autres
+ t3d2.mul(t3d);
+ volumes_.getTransformGroup().setTransform(t3d2);
+ }
+
+ public void removeBranchGraph(final BranchGroup _bg) {
+ getLocale().removeBranchGraph(_bg);
+
+ }
+
+ public void removePropertyChangeListener(final PropertyChangeListener _l) {
+ if (support_ != null) {
+ support_.removePropertyChangeListener(_l);
+ }
+ }
+
+ public void removePropertyChangeListener(final String _propr, final PropertyChangeListener _l) {
+ if (support_ != null) {
+ support_.removePropertyChangeListener(_propr, _l);
+ }
+ }
+
+ public void repaintCanvas() {
+ getCanvas3D().repaint();
+ }
+
+ /**
+ * Tourne la camera sur un axe.
+ *
+ * @param _axe axe de rotation (X,Y ou Z)
+ * @param _valeur angle, en radians
+ */
+ public void rotation(final int _axe, final double _valeur) {
+ // On procede comme pour la translation, sauf qu'il n'est pas necessaire d'envoier un
+ // PropertyChangeEvent: la position ne change pas
+ final Transform3D t3d = new Transform3D();
+ transformU_.getTransform(t3d);
+ final Transform3D t3d2 = new Transform3D();
+ // AxisAngle: vecteur 4*1 qui stocke l'axe de rotation et l'angle en radians
+ AxisAngle4d v = null;
+ switch (_axe) {
+ case X:
+ v = new AxisAngle4d(1, 0, 0, _valeur);
+ break;
+ case Y:
+ v = new AxisAngle4d(0, 1, 0, _valeur);
+ break;
+ case Z:
+ v = new AxisAngle4d(0, 0, 1, _valeur);
+ break;
+ default:
+ }
+ if (v == null) {
+ return;
+ }
+ t3d2.setRotation(v);
+ t3d.mul(t3d2);
+ transformU_.setTransform(t3d);
+ getCurrentCamera().set(t3d);
+ }
+
+ double echelle_ = 1f;
+
+ protected void updateEchelle(final double _newEchelle) {
+ if (_newEchelle == echelle_) {
+ return;
+ }
+ final GrBoite boite = getBoite();
+
+ final Transform3D t3d = new Transform3D();
+ transformU_.getTransform(t3d);
+ final Vector3d trans = new Vector3d();
+ t3d.get(trans);
+ final double deltaInit = trans.z - boite.o_.z_ * echelle_;
+ trans.z = boite.o_.z_ * _newEchelle + deltaInit;
+ t3d.setTranslation(trans);
+ transformU_.setTransform(t3d);
+ for (final Enumeration en = lumieres_.getAllChildren(); en.hasMoreElements();) {
+ final Object obj = en.nextElement();
+ if (obj instanceof BLumiereDirectionnelle) {
+ final BLumiereDirectionnelle calque = (BLumiereDirectionnelle) obj;
+ final BoundingSphere b = calque.getLightBounds();
+ final Point3d center = new Point3d();
+ b.getCenter(center);
+ center.z = boite.e_.z_ * _newEchelle;
+ b.setCenter(center);
+ }
+ }
+ echelle_ = _newEchelle;
+
+ // init();
+ // getCurrentCamera().set(t3d);
+ }
+
+ public void scale(final double _scale) {
+ final Vector3d pos = new Vector3d();
+ getCurrentCamera().get(pos);
+ final double deltaZ = -(pos.z - zmid_) / 5;
+ translation(Z, deltaZ);
+ }
+
+ private Transform3D getCurrentCamera() {
+ return vues_[vue_];
+ }
+
+ public GrBoite getBoite() {
+ return volumes_ == null ? null : volumes_.getBoite();
+ }
+
+ /**
+ * Fixe la couleur du fond.
+ */
+ public void setBackground(final Color _c) {
+ background_.setColor(new Color3f(_c));
+ // getCanvas3D().waitForSwap();
+ }
+
+ public void setImmediateBackground(final Color _c) {
+ if (background_ == null) buildFond(new Color3f(_c));
+ else
+ background_.setColor(new Color3f(_c));
+ }
+
+ public Color getBackground() {
+ Color3f c3f = new Color3f();
+ background_.getColor(c3f);
+ return c3f.get();
+ }
+
+ /**
+ * Change l'affichage de la sc\xE8ne : choix entre rapidit\xE9 et apparence.
+ *
+ * @params _rapide : mode rapide? ( =affichage d\xE9t\xE9rior\xE9)
+ */
+ public void setRapide(final boolean _rapide) {
+ groupe_.setRapide(_rapide);
+ }
+
+ public void setRoot(final BGroupeStandard _root) {
+ buildFond(new Color3f(Color.WHITE));
+ if (groupe_ != null) {
+ getLocale().removeBranchGraph(volumes_);
+ getLocale().removeBranchGraph(lumieres_);
+ }
+ groupe_ = _root;
+ volumes_ = _root.getGroupeVolume();
+ lumieres_ = _root.getGroupeLumiere();
+ addBranchGraph(volumes_);
+ addBranchGraph(lumieres_);
+ }
+
+ public void setUniversTransform(final Transform3D _t) {
+ transformU_.setTransform(_t);
+ }
+
+ /**
+ * positione la camera.
+ */
+ public void setUniversTransforms(final Transform3D[] _t) {
+ transformU_.setTransform(_t[0]);
+ volumes_.getTransformGroup().setTransform(_t[1]);
+ }
+
+ public void setVue(final int _vue) {
+ if (vues_[_vue] != null) {
+ transformU_.setTransform(vues_[_vue]);
+ vue_ = _vue;
+ }
+ }
+
+ /**
+ * Translate la camera sur un axe.
+ *
+ * @param _axe axe de translation (X,Y ou Z)
+ * @param _valeur longueur de la translation en metres
+ */
+ public void translation(final int _axe, final double _valeur) {
+ // on cree une nouvelle transformation
+ final Transform3D t3d = new Transform3D();
+ // o\xF9 l'on stocke celle de la camera
+ transformU_.getTransform(t3d);
+ // on stocke l'ancien vecteur position de la camera
+ final Vector3d oldPosition = new Vector3d();
+ t3d.get(oldPosition);
+ final Transform3D t3d2 = new Transform3D();
+ Vector3d v = new Vector3d();
+ switch (_axe) {
+ case X:
+ v = new Vector3d(_valeur, 0, 0);
+ break;
+ case Y:
+ v = new Vector3d(0, _valeur, 0);
+ break;
+ case Z:
+ v = new Vector3d(0, 0, _valeur);
+ break;
+ default:
+ }
+ // on stocke la translation dans une nouvelle matrice de transformation
+ t3d2.setTranslation(v);
+ // on multiplie l'ancienne matrice par la nouvelle
+ // t3d.mul(t3d2);
+ t3d.mul(t3d2);
+ // on prend le nouveau vecteur position
+ t3d.get(position_);
+ // on envoie un PropertyChanceEvent pour raffraichir l'affichage de la position de la camera
+ if (support_ != null) {
+ support_.firePropertyChange("position", oldPosition, position_);
+ }
+ // on remplace l'ancienne matrice par la nouvelle -> la camera s'est d\xE9plac\xE9e
+ transformU_.setTransform(t3d);
+ getCurrentCamera().set(t3d);
+ }
+
+ public Locale getLocale() {
+ return locale_;
+ }
+
+}
Added: trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/BVolume.java
===================================================================
--- trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/BVolume.java (rev 0)
+++ trunk/framework/ebli-3d/src/main/java/org/fudaa/ebli/volume/BVolume.java 2009-10-11 19:10:04 UTC (rev 5228)
@@ -0,0 +1,402 @@
+/*
+ * @creation 1999-11-29
+ * @modification $Date: 2006-11-14 09:06:28 $
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
+ * @mail de...@fu...
+ */
+package org.fudaa.ebli.volume;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import java.lang.reflect.Method;
+
+import javax.media.j3d.BranchGroup;
+import javax.media.j3d.Group;
+import javax.media.j3d.Node;
+import javax.media.j3d.Transform3D;
+import javax.media.j3d.TransformGroup;
+import javax.vecmath.Vector3d;
+
+import org.fudaa.ebli.controle.BSelecteurTargetInterface;
+import org.fudaa.ebli.geometrie.GrBoite;
+import org.fudaa.ebli.geometrie.GrPoint;
+import org.fudaa.ebli.volume.common.BVolumeAbstract;
+import org.fudaa.ebli.volume.common.GroupeInterface;
+
+/**
+ * @version $Revision: 1.16 $ $Date: 2006-11-14 09:06:28 $ by $Author: deniger $
+ * @author Christophe Delhorbe
+ */
+public abstract class BVolume extends BVolumeAbstract implements PropertyChangeListener, BSelecteurTargetInterface {
+
+ private boolean destructible_;
+
+ protected PropertyChangeSupport support_;
+ // la boite englobante
+ protected GrBoite boite_;
+ // l'ID de l'objet
+ protected int index_;
+ protected String nom_;
+ // son pere
+ protected GroupeInterface pere_;
+ protected boolean rapide_;
+ // la matrice de transformation
+ protected TransformGroup tg_;
+
+ // proprietes :
+ protected boolean visible_;
+
+ /**
+ * Constructeur de BVolume. Cree toute l'arborescence de l'objet et initialise une apparence par defaut.
+ */
+ public BVolume() {
+ nom_ = null;
+ pere_ = null;
+ index_ = 0;
+ visible_ = false;
+ rapide_ = false;
+ boite_ = new GrBoite();
+ setCapability(BranchGroup.ALLOW_DETACH);
+ tg_ = new TransformGroup();
+ tg_.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
+ tg_.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
+ tg_.setCapability(Group.ALLOW_CHILDREN_WRITE);
+ tg_.setCapability(Group.ALLOW_CHILDREN_READ);
+ tg_.setCapability(Group.ALLOW_CHILDREN_EXTEND);
+ tg_.setCapability(Node.ALLOW_LOCAL_TO_VWORLD_READ);
+ addChild(tg_);
+ }
+
+ /**
+ * Cree un BVolume de nom s.
+ *
+ * @param _nom le nom du volume
+ */
+ public BVolume(final String _nom) {
+ this();
+ setName(_nom);
+ }
+
+
+
+ public void actualise(final long _t) {
+ // System.out.println(getName()+" : je m'actualise!");
+ }
+
+ public void addPropertyChangeListener(final String _s, final PropertyChangeListener _l) {
+ if (support_ == null) {
+ support_ = new PropertyChangeSupport(this);
+ }
+ support_.addPropertyChangeListener(_s, _l);
+
+ }
+
+ public void calculeBBox() {}
+
+ /**
+ * Detruit l'objet (il est retire de l'arbre).
+ */
+ public void detruire() {
+ if (isDestructible() && (pere_ != null)) {
+ pere_.remove(index_);
+ }...
[truncated message content] |