[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Java3Djp:01725] Re: VRML97Loader のサポート



八嶋@東工大です。

回答ありがとうございます。

> まずは最新版をお使いかどうかチェックしてみてください。
> KNOWN BUGS ファイルに PixelTexture には対応していないと書いてあります。
> 
> PROTO に関してもなんらかの制限があったと思いました。
> 最新の付属ドキュメントや、ちょっと前のバージョンのドキュメントを
> チェックしてみてください。

付属ドキュメントというのは、vrml97.jarに付属のものですか?
私が持っているvrml97.jarには付属のドキュメントはありませんでした。
上記のKNOWN BUGS ファイルは、どこにあるものでしょうか?

> 現在 vrml97.jar を開発していた人達は X3D 関連の開発に力を入れているようで、
> あまり期待はできないと思います。
> NCSA が出しているもう一つの VRML loader ライブラリ、
> NCSA Portfolio (http://www.ncsa.uiuc.edu/~srp/Java3D/portfolio/) や、その他、
> CyberVRML97 (http://www.cyber.koganei.tokyo.jp/vrml/cv97/cv97java/)
> を使うのも一つの手でしょう。

いま試しにCyberVRML97を使ってサンプルプログラムを作ってみました。
documentにのっている通りに書いたのですが、
loadされたVRMLがうまくCanvas3Dに表示されないようです。
エラーがたくさん出ます。
windowは表示されるのですが、VRMLのオブジェクトだけが表示されません。

CyberVRML97でVRMLをloadして表示するプログラムを作ったことのある方、
簡単な例を見せてもらえませんか?
私が作ったプログラムのソースを以下に載せます。

よろしくお願いします。
--------------------
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.lang.reflect.*;
import java.net.*;
import java.util.*;
import javax.media.j3d.*;
import javax.vecmath.*;
import com.sun.j3d.utils.universe.SimpleUniverse;
import com.sun.j3d.utils.universe.*;
import com.sun.j3d.utils.geometry.*;
import cv97.j3d.*;
//import com.sun.j3d.loaders.vrml97.* ;

public class Cyber97VrmlViewerTest 
{
  public Cyber97VrmlViewerTest(String filename)
  {
    ////////////////////////////////
    //////// Virtual World /////////
    ////////////////////////////////

    SimpleUniverse u = new SimpleUniverse(new Canvas3D(null));
    
    ////////////////////////////////
    ////// VRML file Load  /////////
    ////////////////////////////////

    /* vrmlファイルを読み込み、sceneとする。*/    
    VRML97Loader loader = new VRML97Loader();
    try
      {
    	loader.load(filename);
      }
    catch (Exception e)
      {
    	System.out.println("Exception loading vrml file.");
     }
    if(bg == null){
      System.out.println("Something went wrong.");
      System.exit(1);
    }

    //Scene Graph
    u.addBranchGraph(loader.getBranchGroup());

    //Phisical Window
    Frame f = new Frame("vrml viewer");
    f.add(u.getCanvas(),"Center");
    f.setSize(400,400);
    f.show();
        
  }

  public static void main(String argv[])
  { 
    if( argv.length != 1 ) {  /* コマンド引数の指定が不正 */
      System.err.println("Usage: java MyCyber97VrmlViewer filename");
      System.exit(0);
    }
    String filename = new String( argv[0] );   /* 読み込むファイル */
    Cyber97VrmlViewerTest f = new Cyber97VrmlViewerTest(filename);
    
    }
}