2009-08-17 39 views
6

Tôi có một cảnh viết bằng Java 3d, nơi vị trí quan sát của người dùng được thiết lập để một số phối hợp sử dụng đoạn mã sau:Làm thế nào để vẽ một lớp phủ 2d trên một cảnh 3d Java?

ViewingPlatform vp = simpleUniverse.getViewingPlatform(); 
TransformGroup steerTG = vp.getViewPlatformTransform(); 

Transform3D t3d = new Transform3D(); 
steerTG.getTransform(t3d); 

t3d.lookAt(
     new Point3d(-5, 10, 25), new Point3d(0, 0, 0), new Vector3d(0, 1, 0)); 
t3d.invert(); 

steerTG.setTransform(t3d); 

Bây giờ tôi cần phải đặt một lớp phủ trên đầu trang của cảnh luôn có thể nhìn thấy, chẳng hạn như một số văn bản. Tôi đã thử những điều sau đây, nhưng vô ích:

PlatformGeometry pg = new PlatformGeometry(); 
Text2D text = new Text2D("Text to display", Cell.BLACK, "Verdana", 18, 1); 
pg.addChild(text); 
simpleUniverse.getViewingPlatform().setPlatformGeometry(pg); 

Khi tôi chạy mã trên, tôi không thấy bất kỳ văn bản nào cả. Có ai giúp đuợc không?

+0

Tôi hy vọng tôi có thể hiểu câu hỏi này sớm. Java 3D ở đây tôi đến. –

Trả lời

4

Vấn đề là bạn đang hiển thị văn bản trực tiếp trên đầu máy ảnh trong mặt cắt cắt gần. Bạn cần một cái gì đó như thế này để dịch -1 dọc theo trục z.

PlatformGeometry pg = new PlatformGeometry(); 

    TransformGroup objScale = new TransformGroup(); 
    Transform3D t3d = new Transform3D(); 
    t3d.setTranslation(new Vector3f(0f, 0f, -1f)); 
    objScale.setTransform(t3d); 

    Text2D text = new Text2D("Text to display", Cell.BLACK, "Verdana", 18, 1); 

    objScale.addChild(text); 
    pg.addChild(objScale); 

    simpleUniverse.getViewingPlatform().setPlatformGeometry(pg); 

Hy vọng điều đó sẽ hữu ích.

+0

Tuyệt đối tuyệt vời! Cám ơn rất nhiều! – Cuga

Các vấn đề liên quan