[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Java3Djp:01742] Re: 余色立体表示
巛巛巛 【毎週水曜日 人数限定のタイムセール 実施!】
巛巛巛巛巛 4/11〜4/12午前10時まで受付 ソウル9800円
从⌒ ⌒从 ★ 総額400万の賞品が合計1,500名様に!★
人 ▽ 人 ヴィッツ、液晶テレビ、デジカメ、海外旅行他
~\∧/~ http://ml.infoseek.co.jp/1104.php3 ;
------------------------------------------------------------------------
こんにちは、小林です。
> javax.media.j3d.View に LEFT_EYE_VIEW、RIGHT_EYE_VIEW、CYCLOPEAN_EYE_VIEW
> というモードがあるようですね。
>
> やったことが無いのですが、泥臭い方法としては、
> 左目用と右目用、合計2個の View をシーングラフに追加して
> それぞれオフスクリーンレンダリングするのかもしれません。
オフスクリーン用のCanvas3Dを作って、OnScreenのCanvas3Dと
同じViewに関連付け、右目用のイメージと左目用のイメージを
作成して、とりあえずJPGファイルに出力してみました。
ここまでできたのですが、遠藤さんがおっしゃってた、
> オフスクリーンレンダリングで
> 右目用オフスクリーンと
> 左目用オフスクリーンにそれぞれ描画して
> 一つの Canvas3D に転送すれば可能かも知れません。
この「一つのCanvas3Dに転送する」というのはどういう意味
なのでしょうか?
右目用の画像、左目用の画像というのは、2次元であるわけで、
それを一つCanvas3Dに貼り付ける?? と、Canvas3D上に
見えるのは2次元の画像ですよね。
Canvas3Dなのに画像を貼る??
と、何か変な感じがするのですが。
とりあえず次は、2つの画像から立体表示用の一つの画像を作る
ことにチャレンジしてみます。
下にあるのが、オフスクリーンのCanvas3Dクラスです。
printOffScreen()を呼んで、JPGを作成しています。
public class OffScreenCanvas3D extends Canvas3D
{
boolean offFlg = false;
Canvas3D onCanvas = null;
String fileName = null;
public OffScreenCanvas3D(GraphicsConfiguration gc, Canvas3D c, View view)
{
super(gc, true);
onCanvas = c;
Screen3D sOn = onCanvas.getScreen3D();
Screen3D sOff = getScreen3D();
sOff.setSize(sOn.getSize());
sOff.setPhysicalScreenWidth(sOn.getPhysicalScreenWidth());
sOff.setPhysicalScreenHeight(sOn.getPhysicalScreenHeight());
view.addCanvas3D(this);
}
public void printOffScreen(boolean rightFlg)
{
System.out.println("Start " + new Date(System.currentTimeMillis()).toString
());
BufferedImage bImage = new BufferedImage(onCanvas.getWidth(), onCanvas.
getHeight(), BufferedImage.TYPE_INT_RGB);
ImageComponent2D buffer = new ImageComponent2D(ImageComponent.FORMAT_RGB,
bImage);
buffer.setCapability(ImageComponent2D.ALLOW_IMAGE_READ);
setOffScreenBuffer(buffer);
if(rightFlg){
fileName = "c:\\temp\\Right.jpg";
setMonoscopicViewPolicy(View.RIGHT_EYE_VIEW);
}else{
fileName = "c:\\temp\\Left.jpg";
setMonoscopicViewPolicy(View.LEFT_EYE_VIEW);
}
offFlg = true;
renderOffScreenBuffer();
}
public void postSwap()
{
System.out.println("postSwap() " + offFlg);
if(offFlg){
super.postSwap();
ImageComponent2D image = getOffScreenBuffer();
BufferedImage img = image.getImage();
try {
FileOutputStream out = new FileOutputStream(fileName);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(img);
param.setQuality(0.9f,false);
encoder.setJPEGEncodeParam(param);
encoder.encode(img);
out.close();
} catch ( IOException e ) {
System.out.println("I/O exception!");
}
System.out.println("End " + new Date(System.currentTimeMillis()).toString())
;
offFlg = false;
}
}
}
★
☆ 小林 洋美 < Hiromi Kobayashi > ♪
★ e-mail : hiromi@xxxxxxxxxxx ♪
☆ ♪
------------------------------------------------------------------------
◆桜も良いけど爽やか季節♪ 〜お出かけどこ行く?!
http://www.infoseek.co.jp/Playspot?pg=playspot_top.html&svx=971122