Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Ecovacs Deebot X12 OmniCyclone: lava grazie a FocusJet
Ecovacs Deebot X12 OmniCyclone: lava grazie a FocusJet
Il nuovo Deebot X12 OmniCyclone abbina un sistema di raccolta dello sporco senza sacchetto, un rullo di lavaggio esteso e la tecnologia FocusJet per intervenire più efficacemente sulle macchie più persistenti. Un robot completo e preciso che aiuta a tenere puliti i pavimenti di casa con il minimo sforzo
Narwal Flow 2: la pulizia di casa con un mocio a nastro
Narwal Flow 2: la pulizia di casa con un mocio a nastro
Narwal Flow 2 implementa un mocio a nastro che esegue una pulizia dettagliata del pavimento di casa, in abbinamento ad un potente motore di aspirazione della polvere: un prodotto ideale per gestire in autonomia e con grande efficacia le necessità di pulizia dei pavimenti di casa
Tastiera gaming MSI GK600 TKL: switch hot-swap, display LCD e tre modalità wireless
Tastiera gaming MSI GK600 TKL: switch hot-swap, display LCD e tre modalità wireless
MSI FORGE GK600 TKL WIRELESS: switch lineari hot-swap, tripla connettività, display LCD e 5 strati di fonoassorbimento. Ottima in gaming, a 79,99 euro
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 22-03-2009, 17:11   #1
mauriziop81
Junior Member
 
Iscritto dal: Feb 2009
Messaggi: 8
[JAVA3D] Problema con la Texture

Salve,

sapete dove ho sbagliato a fare la Texture?
Riesco a vedere la texture solo su due faccie le altre sembrano solo striature...

Codice:
Appearance appearance = new Appearance();
Texture texture = (new TextureLoader("C:/Mattoni.jpg",this)).getTexture();
appearance.setTexCoordGeneration(new TexCoordGeneration());
texture.setBoundaryModeS(Texture.WRAP);
texture.setBoundaryModeT(Texture.WRAP);
appearance.setTexture(texture);		
Box box = new Box(xdim, ydim, zdim, Box.GENERATE_TEXTURE_COORDS, appearance);
in allegato il cubo che vedo dalla mia applet.

Grazie
Maurizio
Immagini allegate
File Type: jpg cubo.JPG (23.3 KB, 16 visite)
mauriziop81 è offline   Rispondi citando il messaggio o parte di esso
Old 22-03-2009, 20:33   #2
mauriziop81
Junior Member
 
Iscritto dal: Feb 2009
Messaggi: 8
domanda stroppo difficile?...posso darvi altre informazioni?
mauriziop81 è offline   Rispondi citando il messaggio o parte di esso
Old 24-03-2009, 10:26   #3
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
La tua texture è corretta, è il mapping di Box che crea quell'effetto "strisciata" (che è poi una proiezione parallela dell'immagine).

Per avere una visione "frontale" dell'immagine sulle sei facce di un Box dovresti applicare la texture alle sei facce separatamente.

Scrivo un esempio completo ma il metodo pertinente è createTexturedBox:

Codice:
package j3dcollisions;

import com.sun.j3d.utils.behaviors.mouse.MouseRotate;
import com.sun.j3d.utils.geometry.*;
import com.sun.j3d.utils.image.*;
import com.sun.j3d.utils.universe.SimpleUniverse;
import java.awt.image.*;
import javax.imageio.*;
import javax.media.j3d.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.vecmath.*;

public class TexturedBox {
    public static void main(String[] args) {
        String imageFilePath = "z:\\texture.png";
        final BufferedImage texture = loadImageOrFlee(imageFilePath);
        EventQueue.invokeLater(new Runnable() {
            @Override public void run() {
                TexturedBox.setupAndShow(texture);
            }
        });
    }

    private static BufferedImage loadImageOrFlee(String imageFilePath) {
        try {
            return ImageIO.read(new java.io.File(imageFilePath));
        } catch(IOException ex) {
            ex.printStackTrace();
            System.exit(0);
            return null;
        }
    }

    private static Frame createWindow() {
        Frame window = new Frame("Java3D TexturedBox");
        window.addWindowListener(new WindowAdapter() {
            @Override public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
        window.setSize(400, 400);
        return window;
    }

    private static TransformGroup createMouseRotateGroup(Box texturedBox) {
        TransformGroup boxTransform = new TransformGroup();
        boxTransform.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
        boxTransform.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
        BoundingSphere infinity = new BoundingSphere(new Point3d(),
                Double.POSITIVE_INFINITY);
        MouseRotate mouseRotate = new MouseRotate();
        mouseRotate.setTransformGroup(boxTransform);
        mouseRotate.setSchedulingBounds(infinity);
        boxTransform.addChild(mouseRotate);
        boxTransform.addChild(texturedBox);
        return boxTransform;
    }

    private static Appearance createTexturedAppearance(BufferedImage textureImage) {
        /* da BufferedImage a Texture... */
        Texture texture = new TextureLoader(textureImage).getTexture();
        Appearance faceAppearance = new Appearance();
        TextureUnitState textureUnit = new TextureUnitState();
        textureUnit.setTexture(texture);
        TextureUnitState[] textureUnits = new TextureUnitState[1];
        textureUnits[0] = textureUnit;
        faceAppearance.setTextureUnitState(textureUnits);
        return faceAppearance;
    }

    private static Box createTexturedBox(BufferedImage textureImage) {
        Appearance faceAppearance = createTexturedAppearance(textureImage);
        Box box = new Box(0.2f, 0.2f, 0.2f, Box.GENERATE_NORMALS| Box.GENERATE_TEXTURE_COORDS, new Appearance());
        int[] faceIndices = {Box.FRONT, Box.BACK, Box.BOTTOM, Box.TOP, Box.LEFT, Box.RIGHT};
        for (int faceIndex : faceIndices) {
            Shape3D face = box.getShape(faceIndex);
            face.setAppearance(faceAppearance);
        }
        return box;
    }

    private static void setupAndShow(BufferedImage textureImage) {
        Box texturedBox = createTexturedBox(textureImage);
        TransformGroup boxTransform = createMouseRotateGroup(texturedBox);

        BranchGroup boxGroup = new BranchGroup();
        boxGroup.addChild(boxTransform);
        
        Canvas3D canvas = new Canvas3D(SimpleUniverse.getPreferredConfiguration());
        SimpleUniverse universe = new SimpleUniverse(canvas);
        universe.getViewingPlatform().setNominalViewingTransform();
        universe.addBranchGraph(boxGroup);

        Frame window = createWindow();
        window.add(canvas);
        window.setVisible(true);
    }
}
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Ecovacs Deebot X12 OmniCyclone: lava grazie a FocusJet Ecovacs Deebot X12 OmniCyclone: lava grazie a Fo...
Narwal Flow 2: la pulizia di casa con un mocio a nastro Narwal Flow 2: la pulizia di casa con un mocio a...
Tastiera gaming MSI GK600 TKL: switch hot-swap, display LCD e tre modalità wireless Tastiera gaming MSI GK600 TKL: switch hot-swap, ...
DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici DJI Osmo Pocket 4: la gimbal camera tascabile cr...
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori Sony INZONE H6 Air: il primo headset open-back d...
SSD troppo cari? La soluzione alla crisi...
Anteprima mondiale Hyundai IONIQ 3: segm...
Fintool sbarca su Microsoft 365: arrivan...
Hanno chiesto 1 dollaro per salvare un M...
Arriva AgentExchange, il marketplace di ...
Blizzard fa chiudere Turtle WoW: perché ...
Claude Desktop e la modifica silenziosa ...
Blue Origin ha mostrato gli interni del ...
Linux alla pari di Windows in gioco: con...
Il rientro del secondo stadio del razzo ...
Il controller ufficiale Microsoft per Xb...
DJI Power 1000 Mini: la power station da...
IT Wallet sempre più aperto: in a...
Samsung pronta alla svolta: il Galaxy S2...
Segway Navimow i206 AWD, il robot taglia...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 16:47.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v