Torna indietro   Hardware Upgrade Forum > Software > Programmazione

HONOR CHOICE Projector Air Pro: piccolo, portatile e con Netflix
HONOR CHOICE Projector Air Pro: piccolo, portatile e con Netflix
Un proiettore economico, che fa della portabilità e immediatezza i suoi punti di forza. Adatto per una camera da letto o per la casa vacanze, è basato su sistema proprietario Linux ma offre piena compatibilità ufficiale a Netflix
ASUS ProArt GoPro Edition è il notebook compatto per chi crea
ASUS ProArt GoPro Edition è il notebook compatto per chi crea
Un notebook sviluppato in collaborazione con GoPro ma che risponde al meglio alle necessità di tutti coloro che creano contenuti video: robustezza, design, potenza di calcolo e funzionalità si abbinano al meglio tra di loro, pur se a prezzo di un costo elevato per via della tanta memoria onboard
Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090
Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090
Ho affidato ai due modelli lo stesso mestiere ma non lo stesso identico prompt: trasformare una storia illustrata in un video usando una RTX 3090 e modelli locali. Ne sono usciti due film, due applicazioni e due idee opposte di efficienza. Fucina, progettata con Fable 5, colpisce di più nei primi secondi. Storyboard Studio, costruito con ChatGPT/Codex, regge meglio sulla distanza e vince il confronto complessivo, ma di stretta misura
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 09-12-2008, 15:18   #1
som
Member
 
Iscritto dal: Apr 2008
Messaggi: 82
[JAVA3D] Utilizzare 2D in Canvas3D

Salve a tutti,
ho la necessità di utilizzare delle forme bidimensionali in un canvas3D.
Per fare ciò ho ridefinito il metodo postRender() della classe Canvas3D

Codice:
public class CustomCanvas3D extends Canvas3D {
	public CustomCanvas3D(GraphicsConfiguration gcIn) {
		super(gcIn);
	}
        @Override
	public void postRender()
	{
                J3DGraphics2D g = getGraphics2D();
                g.setColor(Color.orange);
                g.fillOval(0, 0, 50, 50);
                g.flush(true);
	}
}
fin qui tutto ok. L'ovale in esempio mi compare nel canvas.

Ora avrei la necessità di capire quando il mouse viene cliccato su questo oggetto in modo da poterlo spostare nel canvas (e magari anche ridimensionarlo.. ma per ora vorrei solo traslarlo).

Il pick implemento per intercettare il click sull'oggetto 3d mi pare non funzionante per l'oggetto 2D (anche perchè questo non fa parte del BranchGroup associato al PickCanvas), quindi dovrei fare diversamente.

Qualcuno ha idea di come si possa fare a gestire degli oggetti 2D in un canvas3D?
Intanto vi ringrazio per l'attenzione.
Ciao

ps. Avevo provato anche a definire i miei oggetti 2D come trasformazione della ViewingPlatform dell'Universo, ma non mi convinceva perchè a me servirà estrarre dei punti di intersezione tra questi oggetti 2D e quelli 3D.
som è offline   Rispondi citando il messaggio o parte di esso
Old 09-12-2008, 17:09   #2
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
[Premesso che non conosco il framework Java3D]
Quello che vuoi fare temo non sia proprio banale.
Guardando lo spezzone di codice vedo che tu hai eseguito delle operazioni di disegno sul canvas 2d ottenuto dal canvas 3d, punto.
Credo proprio che non ci sia da nessuna parte un oggetto corrispondente al tuo ovale da poter chiedere al canvas 3d e con cui farlo inteagire.

Già per poter individuare un click sul canvas 2d e dire se è interno o meno all'ovale c'è bisogno di un oggetto/modello della figura, credo che al tuo caso potrebbe essere utile utilizzare qualche strumento già pronto nel Framework di Java, in particolare:

- l'interfaccia java.awt.Shape
- alcune classi in java.awt.geom (tra cui PathIterator)

Lo scopo sarebbe quello di evitare di disegnare direttamente con i comandi la figura; invece la si "costruisce" come un percorso (un PathIterator, che poi è un'implementazione di una Shape, vedi sopra) in modo da poter poi fare i confronti con le coordinate del mouse ed essere agevolati anche per quanto rigurda traslazioni varie (e rotazioni nel piano 2d, se dovesse servire).

Per quanto riguarda invece l'intersezione della figura 2d con quelle 3d francamente non saprei.

Per curiosità, cosa stai cercando di ottenere? Cioè quale sarebbe lo scopo di trovare le intersezioni delle figure 2d con le 3d?
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)

Ultima modifica di banryu79 : 09-12-2008 alle 17:26.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 09-12-2008, 22:09   #3
som
Member
 
Iscritto dal: Apr 2008
Messaggi: 82
Intanto ti ringrazio per la risposta.

In effetti credo tu abbia ragione, proverò a disegnare in questo modo (per la parte 3d utilizzo già delle Shape3D)

L'intersezione tra gli oggetti 2D e il solido 3D che c'è sotto mi serve perchè rappresenteranno delle coordinate da mandare ad un macchina a controllo numerico. In pratica sto cercando di capire se posso riuscire a creare un cad/cam con java 3d ( il limite non è detto che sia java3d ... anzi potrei benissimo essere io ).
Se hai suggerimenti in merito sono qui!

Comunque ti aggiorno sugli sviluppi!

Ultima modifica di som : 09-12-2008 alle 22:16.
som è offline   Rispondi citando il messaggio o parte di esso
Old 09-12-2008, 23:00   #4
nico159
Senior Member
 
Iscritto dal: Aug 2003
Città: Barletta (BA)
Messaggi: 939
Non so se ti può essere utile
http://labs.trolltech.com/blogs/2008...sion-wolfenqt/
Ci sono i sorgenti, magari potresti usare la stessa tecnica con Java (comunque le QT funzionano anche con Java)
__________________
In a world without fences, who needs Gates?
Power by: Fedora 8 - Mac OS X 10.4.11

Ultima modifica di nico159 : 09-12-2008 alle 23:02.
nico159 è offline   Rispondi citando il messaggio o parte di esso
Old 10-12-2008, 07:13   #5
som
Member
 
Iscritto dal: Apr 2008
Messaggi: 82
Grazie nico159, ci dò subito un'occhiata.
som è offline   Rispondi citando il messaggio o parte di esso
Old 10-12-2008, 11:29   #6
som
Member
 
Iscritto dal: Apr 2008
Messaggi: 82
Ho risolto la questione del disegno2D selezionabile e traslabile aggiungendo all'Universo un nuovo BranchGroup che contiene il mio 2D ottenuto con Shape3D con quota z fissata.
Ora però devo fare in modo che questo si porti sulla superficie per poi ricavare le mie coordinate. Mi piacerebbe ottenere un effetto magnetico tra la superficie del solido e il mio 2D ... ma chissà
som è offline   Rispondi citando il messaggio o parte di esso
Old 10-12-2008, 11:44   #7
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da som Guarda i messaggi
Ho risolto la questione del disegno2D selezionabile e traslabile aggiungendo all'Universo un nuovo BranchGroup che contiene il mio 2D ottenuto con Shape3D con quota z fissata.
Ora però devo fare in modo che questo si porti sulla superficie per poi ricavare le mie coordinate. Mi piacerebbe ottenere un effetto magnetico tra la superficie del solido e il mio 2D ... ma chissà
Immagino che la superficie del solido 3D rappresenti il "pezzo" da lavorare...
Invece il solido 3D a quota Z fissa (nel senso che ha spessore costante?) cosa rappresenta? La lavorazione che deve effettuare la testa della macchina CN? (Sto ipotizzando che la macchina in questione sia una sorta di pantografo).

Forse sbaglio, ma se la superficie 3D del "pezzo" rappresenta la superficie di lavoro, non puoi in qualche modo ricavarti la sua quota Z e usarla come quota Z di base per la Shape3D della "lavorazione" nel nuovo BranchGroup?

Cioè non ho capito in che senso vuoi ottenere l'effetto magnetico: immagino si tratti di quando catturi e processi gli eventi del mouse per la traslazione (sei già riuscito a riconoscere un click del mouse sulla Shape?)...
In quel caso basta che tieni "bloccata" una coordinata e lasci che la traslazione agisca sulle altre due... credo
[Ricordo che non consco Java3D, e quindi non so nulla, manco cos'è un BranchGroup e che funzione ha nell'architettura di questo framework]
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 10-12-2008, 12:41   #8
som
Member
 
Iscritto dal: Apr 2008
Messaggi: 82
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Immagino che la superficie del solido 3D rappresenti il "pezzo" da lavorare...
Invece il solido 3D a quota Z fissa (nel senso che ha spessore costante?) cosa rappresenta? La lavorazione che deve effettuare la testa della macchina CN? (Sto ipotizzando che la macchina in questione sia una sorta di pantografo).
Esattamente!

Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Forse sbaglio, ma se la superficie 3D del "pezzo" rappresenta la superficie di lavoro, non puoi in qualche modo ricavarti la sua quota Z e usarla come quota Z di base per la Shape3D della "lavorazione" nel nuovo BranchGroup?
Si ma non è esattamente così immediato. A seconda della superficie che voglio lavorare, "'l'altezza" a cui piazzare la mia lavorazione può essere una distanza dall'asse X se il piano è orizzontale, dall'asse Y se il piano è verticale o da calcolare in caso di piano obliquo...tutto dipende dal piano.

Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Cioè non ho capito in che senso vuoi ottenere l'effetto magnetico: immagino si tratti di quando catturi e processi gli eventi del mouse per la traslazione (sei già riuscito a riconoscere un click del mouse sulla Shape?)...
In quel caso basta che tieni "bloccata" una coordinata e lasci che la traslazione agisca sulle altre due... credo
[Ricordo che non consco Java3D, e quindi non so nulla, manco cos'è un BranchGroup e che funzione ha nell'architettura di questo framework]
Sì sono riuscito a selezionare la shape con il click. L'Effetto magnetico che avevo in mente ( ma ci devo ancora ragionare su ) era per fare in modo che il disegno della lavorazione andasse direttamente ad aderire sulla superficie da lavorare. Con la traslazione mi sposto in x e y , la terza coordinata z rimane da gestire o con i calcoli che ti dicevo prima o in questo modo ( o in entrambi )

[ il BranchGroup è un nodo fondamentale dell'albero che compone il Java3D ]

Cmq ti ringrazio molto non solo per la partecipazione alla discussione, ma anche per aver capito "al volo".
som è offline   Rispondi citando il messaggio o parte di esso
Old 10-12-2008, 12:51   #9
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da som Guarda i messaggi
Cmq ti ringrazio molto non solo per la partecipazione alla discussione, ma anche per aver capito "al volo".
Credo che sia perchè lavoriamo più o meno nello stesso "ramo"... io ho a che fare con un CAD/CAM di forme parametrizzate.
Per (mia) fortuna le forme poi servono solo per esplodere le loro facce (quelle che per te sono le superfici) nel piano 2D e i tagli sono sempre nel piano 2D, e non ho neppure un motore verticale per la testa di taglio (posizioni fisse, pistoni) quindi è tutto molto più semplice.

Al momento non mi viene in mente nulla per il tuo problema, ma mi pare di aver capito che le "superfici" su cui lavori non è detto che corrispondano sempre ai piani ortogonali rispetto il sistema cartesiano di riferimento.

In tal caso forse ti servirebbe (se già non ce l'hai) un'astrazione/entità che ti rappresenti un piano generico, potrebbe servire ad esempio per rimappare un certo spostamento fatto su un piano ortogonale (quello XY del mouse sul canvas2D, tanto per essere più concreti) sul piano che rappresenta la tua attuale "superfice" di lavoro.

Spero di non aver detto minchiate
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)

Ultima modifica di banryu79 : 10-12-2008 alle 12:54.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 10-12-2008, 13:06   #10
som
Member
 
Iscritto dal: Apr 2008
Messaggi: 82
Sì, la superficie può avere qualsiasi inclinazione e ciò complica un po' le cose.

Non credo tu abbia detto minchiate, ma non escludo che abbia potuto dirne anche io
som è offline   Rispondi citando il messaggio o parte di esso
Old 10-12-2008, 15:17   #11
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Intendevo dire che dovresti astrarre una classe/interfaccia (quel che è) che rappresenti un generico Piano: i piani ortogonali sono solo un caso particolare tra tutti quelli possibili.

Se poi riesci a definire un'operazione che traduca le coordinate di un punto del piano (ortogonale) nelle rispettive coordinate del corrispettivo punto sul piano (inclinato) sei a cavallo: se non sbaglio ciò ha a che fare con gli spazi vettoriali.

Conoscendo la teoria (le giuste formule) dovresti essere in grado di implementare un sistema come ho descritto sopra, quindi pensa un po', potresti mappare le coordinate su qualsiasi piano (cioè inclinato contemporaneamente su tutti gli assi, ammesso che ciò ti serva).

Purtroppo sono scarsillo in quanto a conoscenze matematico/algebriche, forse qualche altro utente ti può dare le giuste informazioni.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 17-12-2008, 13:34   #12
som
Member
 
Iscritto dal: Apr 2008
Messaggi: 82
Questo calcolo per ora non dovrebbe servirmi, ho deciso di rendere i piani paralleli al mio schermo prima di aggiungerci delle lavorazioni ( che tra l'altro sono diventate dei solidi 3D anche loro... )

Ho un mucchio di problemi .. chissà se ne esco vivo
som è offline   Rispondi citando il messaggio o parte di esso
Old 17-12-2008, 14:05   #13
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da som Guarda i messaggi
Questo calcolo per ora non dovrebbe servirmi, ho deciso di rendere i piani paralleli al mio schermo prima di aggiungerci delle lavorazioni ( che tra l'altro sono diventate dei solidi 3D anche loro... )

Ho un mucchio di problemi .. chissà se ne esco vivo
Bhe, quello che stai facendo non è proprio semplicissimo (parlo immaginando anche il resto che ci sta dietro, non solo il problema oggetto di questo thread), specie se sei da solo e devi contare solo su te stesso per implementare il software: ti auguro di avere almeno un altro collega con cui confrontarti

Ottima idea pressuporre il parallelismo dei piani rispetto allo schermo per introdurre le lavorazioni nei piani inclinati (provo a immaginare: il trucco sta nel fatto che sai quanto è il valore di inclinazione del piano rispetto quello ortogonale di riferimento: ma se le lavorazioni le inserisci parallele a quello inclinato ciò forse significa che la testa che deve fare la lavorazione è inclinabile/ruotabile?)
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 17-12-2008, 15:28   #14
som
Member
 
Iscritto dal: Apr 2008
Messaggi: 82
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Bhe, quello che stai facendo non è proprio semplicissimo (parlo immaginando anche il resto che ci sta dietro, non solo il problema oggetto di questo thread), specie se sei da solo e devi contare solo su te stesso per implementare il software: ti auguro di avere almeno un altro collega con cui confrontarti
Grazie banryu! Al progetto ci lavoro da solo ma ho un ottimo collega con cui confrontarmi!

Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Ottima idea pressuporre il parallelismo dei piani rispetto allo schermo per introdurre le lavorazioni nei piani inclinati (provo a immaginare: il trucco sta nel fatto che sai quanto è il valore di inclinazione del piano rispetto quello ortogonale di riferimento: ma se le lavorazioni le inserisci parallele a quello inclinato ciò forse significa che la testa che deve fare la lavorazione è inclinabile/ruotabile?)
Certo che non ti sfugge nulla .. Grande!!
som è offline   Rispondi citando il messaggio o parte di esso
Old 17-12-2008, 15:39   #15
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da som Guarda i messaggi
Certo che non ti sfugge nulla .. Grande!!
Se è come pensavo allora la macchina e le lavorazioni sono belle complesse, azz.
Chissà che figata

Che fate? Fresate metalli? O magari fate modelli per stampi?
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 17-12-2008, 15:45   #16
som
Member
 
Iscritto dal: Apr 2008
Messaggi: 82
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Se è come pensavo allora la macchina e le lavorazioni sono belle complesse, azz.
Chissà che figata

Che fate? Fresate metalli? O magari fate modelli per stampi?
Macchine utensili di vari tipi tra cui anche frese per metalli!
som è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


HONOR CHOICE Projector Air Pro: piccolo, portatile e con Netflix HONOR CHOICE Projector Air Pro: piccolo, portati...
ASUS ProArt GoPro Edition è il notebook compatto per chi crea ASUS ProArt GoPro Edition è il notebook c...
Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090 Fable e Sol a confronto: due cartoni animati cre...
Il tablet rugged leggero e sottile: Lenovo ThinkTab X11 offre resistenza, doppia USB-C e batteria rimovibile Il tablet rugged leggero e sottile: Lenovo Think...
AMD Advancing AI 2026: l'hardware AMD per le elaborazioni IA del futuro, tra GPU, CPU e robot AMD Advancing AI 2026: l'hardware AMD per le ela...
BYD, boom in Giappone: la sua prima kei ...
L'Europa mette sul piatto 1,5 miliardi d...
Google dichiara risolto il bug della bat...
Intel apre i segreti dei chip Atom a una...
FC 27 stravolgerà il gameplay: me...
Microsoft conferma la super app Copilot:...
Svolta per il vaccino anti-HIV: team ann...
Il governo USA 'compra' una quota di Glo...
Veeam offre supporto a sei nuovi hypervi...
WINDTRE BUSINESS apre alle imprese il da...
DEF CON vieta gli occhiali smart da 'per...
Keychron annuncia ZGM, il primo firmware...
Zuckerberg prevede miliardi di agenti IA...
Benzina sempre più cara, boom di ...
DualSense White a 59,99€: il controller ...
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: 18:20.


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