Frage

Ich habe versucht, den Bildschirm zu machen, um zu arbeiten, um zu arbeiten Java3d 1.5.2. In meinem Quellcode Ich habe versucht, einen erweiterten zu befestigen Canvas3D Das wird außerhalb des Bildschirms rendern SimpleUniverse, Aber das wird das Render brechen:

62.  // FOR SOME REASON THIS BREAKS RENDERING
63.  universe.getViewer().getView().addCanvas3D(canvas);

Der vollständige Quellcode ist etwas zu groß, um auf Stackoverflow einzufügen, so hier.

Zeile 63 wurde kommentiert und hat das gewöhnliche Rendering von Canvas3d auf dem Bildschirm. Es wird einen Würfel rendern und dies in a anzeigen JFrame. Wenn Sie jedoch den Kommentar entfernen, veranlasst das Render von Off-Screen-Render, dass der On-Screen-Rendering das Rendern nicht rendert. Auch das Rendering außerhalb des Bildschirms wird ein "großes schwarzes Nichts" zurückgeben BufferedImage.

Ich würde gerne wissen, wie man den Rendering des Aff -Bildschirms funktioniert, dh die Szene eines rotierten Würfels zu einem gepufferten Bild. Ich habe mir den von Java3D bereitgestellten Beispielcode für das Rendering außerhalb des Bildschirms angesehen und sie tun dies auch als dies (mit der Ausnahme, dass sie die verwenden Raster Objekt, um den AUS-Bildschirmpuffer wieder in ein Bildschirmfenster zu rendern).

War es hilfreich?

Lösung

Es könnte die physische Dimension des Screens3D sein, die falsch ist. Der Wert soll die Größe des physischen Bildschirms in Metern haben. Sie können mit:

screen3D.setPhysicalScreenWidth(0.0254/90.0 * destWidth);
screen3D.setPhysicalScreenHeight(0.0254/90.0 * destHeight);

Die Werte stammen vom oberen Rand des Screen3d Javadoc. Die problematische Zeile arbeitete zusammen mit dem obigen Code, zumindest für mich :)

Das Festlegen der falschen physischen Dimension kann auch das Seitenverhältnis des gerenderten Bildes ändern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top