亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? wraploaderinfo3d.java

?? java 3D
?? JAVA
?? 第 1 頁 / 共 2 頁
字號(hào):
// WrapLoaderInfo3D.java// Andrew Davison, April 2005, ad@fivedots.coe.psu.ac.th/* A checkboard floor, with a red center square, and labelled   XZ axes.   Load the model stored in filename fn using a NCSA Portfolio   loader. The model is rotated and scaled so it is easy to see.   Carry out the following operations on the loaded model:     * display its named objects     * traverse its scene graph, saving info to the EXAMINE_FN file     * adjust the model's component shapes in various ways         - there are 4 different variations; see adjustShape3D()*/import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.io.*;import java.util.*;import java.text.DecimalFormat;import com.sun.j3d.utils.universe.*;import com.sun.j3d.utils.geometry.*;import com.sun.j3d.utils.image.*;import javax.media.j3d.*;import javax.vecmath.*;import com.sun.j3d.utils.behaviors.vp.*;import ncsa.j3d.loaders.*;     // Portfolio loadersimport com.sun.j3d.loaders.Scene;// import com.tornadolabs.j3dtree.*;    // for displaying the scene graphpublic class WrapLoaderInfo3D extends JPanel// Holds the 3D canvas where the loaded image is displayed{  private static final int PWIDTH = 512;   // size of panel  private static final int PHEIGHT = 512;   private static final int BOUNDSIZE = 100;  // larger than world  private static final Point3d USERPOSN = new Point3d(0,5,20);    // initial user position  private static final Color3f white = new Color3f(1.0f, 1.0f, 1.0f);  private static final Color3f black = new Color3f(0.0f, 0.0f, 0.0f);  private static final Color3f blue = new Color3f(0.6f,0.6f, 1.0f);  private static final String EXAMINE_FN = "examObj.txt";  private static final String TEXTURE_FN = "models/stone.jpg";  private SimpleUniverse su;  private BranchGroup sceneBG;  private BoundingSphere bounds;   // for environment nodes  private FileWriter ofw;     // for writing out model info  private DecimalFormat df;   // for simpler output  // references to the loading model  private Scene loadedScene = null;  private BranchGroup loadedBG = null;  private int adaptNo;            // used to choose the shape adaption method in adjustShape3D()  private Texture2D texture = null;   // used when changing a shape's texture  // private Java3dTree j3dTree;   // frame to hold tree display  public WrapLoaderInfo3D(String fn, int adaptNo)  // construct the 3D canvas  {    this.adaptNo = adaptNo;    setLayout( new BorderLayout() );    setOpaque( false );    setPreferredSize( new Dimension(PWIDTH, PHEIGHT));    GraphicsConfiguration config =					SimpleUniverse.getPreferredConfiguration();    Canvas3D canvas3D = new Canvas3D(config);    add("Center", canvas3D);    canvas3D.setFocusable(true);     // give focus to the canvas     canvas3D.requestFocus();    su = new SimpleUniverse(canvas3D);    // j3dTree = new Java3dTree();   // create a display tree for the SG    createSceneGraph(fn);    initUserPosition();        // set user's viewpoint    orbitControls(canvas3D);   // controls for moving the viewpoint        su.addBranchGraph( sceneBG );	// j3dTree.updateNodes( su );    // build the tree display window  } // end of WrapLoaderInfo3D()  private void createSceneGraph(String fn)   // initilise the scene  {     sceneBG = new BranchGroup();    bounds = new BoundingSphere(new Point3d(0,0,0), BOUNDSIZE);    df = new DecimalFormat("0.###");    // 3 dp       lightScene();         // add the lights    addBackground();      // add the sky    sceneBG.addChild( new CheckerFloor().getBG() );  // add the floor    loadModel(fn);    // load the model stored in fn                      // loadedScene and loadedBG should now have values    // examine the model    if (loadedScene != null) {      showNamedObject(loadedScene);   // display its named objects      storeGraphInfo(loadedBG);       // traverse model's graph; save info to file      // adjust the model's component shapes in various ways      adjustShapes(loadedBG);          }	// j3dTree.recursiveApplyCapability( sceneBG );   // set capabilities for tree display    sceneBG.compile();   // fix the scene  } // end of createSceneGraph()  private void lightScene()  /* One ambient light, 2 directional lights */  {    // Set up the ambient light    AmbientLight ambientLightNode = new AmbientLight(white);    ambientLightNode.setInfluencingBounds(bounds);    sceneBG.addChild(ambientLightNode);    // Set up the directional lights    Vector3f light1Direction  = new Vector3f(-1.0f, -1.0f, -1.0f);       // left, down, backwards     Vector3f light2Direction  = new Vector3f(1.0f, -1.0f, 1.0f);       // right, down, forwards    DirectionalLight light1 =             new DirectionalLight(white, light1Direction);    light1.setInfluencingBounds(bounds);    sceneBG.addChild(light1);    DirectionalLight light2 =         new DirectionalLight(white, light2Direction);    light2.setInfluencingBounds(bounds);    sceneBG.addChild(light2);  }  // end of lightScene()  private void addBackground()  // A blue sky  { Background back = new Background();    back.setApplicationBounds( bounds );    back.setColor(0.17f, 0.65f, 0.92f);    // sky colour    sceneBG.addChild( back );  }  // end of addBackground()  private void orbitControls(Canvas3D c)  /* OrbitBehaviour allows the user to rotate around the scene, and to     zoom in and out.  */  {    OrbitBehavior orbit = 		new OrbitBehavior(c, OrbitBehavior.REVERSE_ALL);    orbit.setSchedulingBounds(bounds);    ViewingPlatform vp = su.getViewingPlatform();    vp.setViewPlatformBehavior(orbit);	      }  // end of orbitControls()  private void initUserPosition()  // Set the user's initial viewpoint using lookAt()  {    ViewingPlatform vp = su.getViewingPlatform();    TransformGroup steerTG = vp.getViewPlatformTransform();    Transform3D t3d = new Transform3D();    steerTG.getTransform(t3d);    // args are: viewer posn, where looking, up direction    t3d.lookAt( USERPOSN, new Point3d(0,0,0), new Vector3d(0,1,0));    t3d.invert();    steerTG.setTransform(t3d);  }  // end of initUserPosition()// -------------------------- model loading --------------    private void loadModel(String fn)    /* Load the model from fn into the scene graph using a NCSA        Portfolio loader. Rotate and scale it to make it easier to see.       Store the loaded model's scene in the global loadedScene,        and its branch group in loadedBG.    */    {      FileWriter ofw = null;      System.out.println( "Loading: " + fn );      try {        ModelLoader loader = new ModelLoader();    // the NCSA portfolio loader        // System.out.println("Loader flags: " + loader.getFlags());        loadedScene = loader.load(fn);             // the loaded scene        // Rotate and scale the model        if(loadedScene != null ) {          loadedBG = loadedScene.getSceneGroup();    // the model's BG           Transform3D t3d = new Transform3D();          t3d.rotX( -Math.PI/2.0 );    // models are often on their face; fix that          Vector3d scaleVec = calcScaleFactor(loadedBG, fn);   // scale the model          t3d.setScale( scaleVec );          TransformGroup tg = new TransformGroup(t3d);          tg.addChild(loadedBG);          sceneBG.addChild(tg);   // add (tg->loadedBG) to scene        }        else          System.out.println("Load error with: " + fn);      }      catch( IOException ioe )      { System.err.println("Could not find object file: " + fn); }    } // end of loadModel()  private Vector3d calcScaleFactor(BranchGroup loadedBG, String fn)  // Scale the model based on its original bounding box size  {     BoundingBox boundbox = new BoundingBox( loadedBG.getBounds() );     // System.out.println(boundbox);     // obtain the upper and lower coordinates of the box     Point3d lower = new Point3d();     boundbox.getLower( lower );     Point3d upper = new Point3d();     boundbox.getUpper( upper );     // store the largest X, Y, or Z dimension and calculate a scale factor     double max = 0.0;     if( (upper.x - lower.x ) > max )       max = (upper.x - lower.x );     if( (upper.y - lower.y ) > max )       max = (upper.y - lower.y );     if( (upper.z - lower.z ) > max )       max = (upper.z - lower.z );     double scaleFactor = 10.0/max;    // 10 is half the width of the floor     System.out.println("max dimension: " + df.format(max) +                         "; scaleFactor: " + df.format(scaleFactor) );     // limit the scaling so that a big model isn't scaled too much     if( scaleFactor < 0.0005 )         scaleFactor = 0.0005;     return new Vector3d(scaleFactor, scaleFactor, scaleFactor);  }  // end of calcScaleFactor() // ---------- model examination --------------------------------  private void showNamedObject(Scene loadedScene)  /* Display the named objects, if any.      The naming scheme is file-type dependent, but includes      VRML DEF names and Lightwave 3D object filenames.  */  {    String name;    Hashtable namedObjects = loadedScene.getNamedObjects();    Enumeration e = namedObjects.keys();    if (namedObjects.isEmpty())      System.out.println("No Named Objects");    else {      System.out.println("Named Objects");      while(e.hasMoreElements()) {        name = (String) e.nextElement();         System.out.println(name);      }    }  }  // end of showNamedObject()    private void storeGraphInfo(BranchGroup bg)  /* Traverse the model's scene graph and store      information in EXAMINE_FN via the ofw FileWriter.  */  {    System.out.println("Writing model details to " + EXAMINE_FN);    try {      ofw = new FileWriter( EXAMINE_FN );

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产福利在线观看| 在线观看亚洲专区| 国产亚洲精品资源在线26u| 另类综合日韩欧美亚洲| 精品成人一区二区三区| 国产白丝网站精品污在线入口| 中文字幕av一区 二区| av不卡免费电影| 亚洲亚洲人成综合网络| 91精品综合久久久久久| 精品夜夜嗨av一区二区三区| 久久精品欧美日韩| 欧美精品一区二区不卡| 尤物在线观看一区| 成人黄色一级视频| 亚洲人成在线观看一区二区| 欧美性三三影院| 蜜臀a∨国产成人精品| 国产三级欧美三级日产三级99| 91一区二区三区在线观看| 亚洲成人av免费| 国产三级欧美三级| 日本福利一区二区| 免费成人性网站| 国产精品进线69影院| 欧美精品v国产精品v日韩精品| 精品夜夜嗨av一区二区三区| 成人免费在线播放视频| 91精品欧美一区二区三区综合在| 国产激情视频一区二区在线观看 | 久久99日本精品| 国产精品色在线| 337p亚洲精品色噜噜狠狠| 国产精品2024| 亚洲福利一二三区| 国产精品嫩草影院av蜜臀| 91精品国产综合久久久久久久久久| 国产精品综合av一区二区国产馆| 亚洲国产成人精品视频| 中文字幕av免费专区久久| 欧美福利一区二区| eeuss鲁片一区二区三区| 看片网站欧美日韩| 亚洲一区在线播放| 国产精品久久久一本精品| 日韩午夜精品视频| 欧美在线观看一二区| 不卡的电视剧免费网站有什么| 毛片一区二区三区| 亚洲国产精品久久一线不卡| 国产精品你懂的在线欣赏| 精品va天堂亚洲国产| 欧美一区二区视频在线观看| 在线观看www91| av电影天堂一区二区在线观看| 国内精品国产三级国产a久久| 亚洲国产成人tv| 亚洲激情网站免费观看| 一区在线观看免费| 日本一区二区三区在线不卡| 欧美精品一区二区久久婷婷| 日韩欧美一区中文| 91精品国产综合久久福利软件| 欧美色大人视频| 在线观看国产91| 91网站最新网址| 91麻豆国产在线观看| 色偷偷成人一区二区三区91| 一本一道波多野结衣一区二区| 成人三级伦理片| 99久久婷婷国产综合精品电影| 成人18视频日本| 99久久久精品免费观看国产蜜| av资源站一区| 91麻豆免费视频| 在线观看国产一区二区| 欧美色视频在线观看| 欧美精品久久一区| 91麻豆精品国产自产在线观看一区| 欧美乱妇15p| 7777女厕盗摄久久久| 日韩欧美在线影院| 精品国产一区二区在线观看| 亚洲精品在线一区二区| 国产视频在线观看一区二区三区| 久久精品一区二区三区不卡 | 免费一级欧美片在线观看| 人人爽香蕉精品| 久久国产精品无码网站| 国产一区二区福利视频| 成人成人成人在线视频| 91麻豆蜜桃一区二区三区| 欧美日韩一区中文字幕| 91精品综合久久久久久| 久久久久久免费| 中文字幕亚洲成人| 亚洲第一在线综合网站| 捆绑紧缚一区二区三区视频 | 老司机精品视频导航| 国产精品综合二区| 99re热这里只有精品视频| 欧美图区在线视频| 精品免费一区二区三区| 国产精品国产三级国产普通话三级 | 中文字幕av一区二区三区| 亚洲欧美日韩在线| 午夜电影一区二区| 国产精品一区2区| 色悠悠久久综合| 欧美一区二区三区成人| 国产亚洲美州欧州综合国| 亚洲精品大片www| 蜜桃av一区二区在线观看| 成人免费黄色大片| 91 com成人网| 国产免费观看久久| 午夜精品视频在线观看| 国产剧情在线观看一区二区| 在线精品国精品国产尤物884a| 日韩免费一区二区| 中文字幕免费观看一区| 视频一区在线视频| 成人av网在线| 精品美女被调教视频大全网站| 国产精品久久午夜夜伦鲁鲁| 天堂资源在线中文精品| 成人爱爱电影网址| 日韩精品在线一区二区| 亚洲另类一区二区| 国产在线精品一区二区| 欧美精品乱码久久久久久按摩| 国产精品三级在线观看| 蜜臀久久99精品久久久久久9| 色综合欧美在线| 久久精品视频免费| 蜜臀精品久久久久久蜜臀| 972aa.com艺术欧美| 欧美精品一区二区精品网| 亚洲高清视频中文字幕| 99久久精品久久久久久清纯| 久久久久久亚洲综合影院红桃 | 久久蜜桃av一区精品变态类天堂| 亚洲一区二区三区在线播放| 成人国产精品免费网站| 久久色视频免费观看| 日本成人中文字幕| 欧美伊人久久久久久午夜久久久久| 国产嫩草影院久久久久| 国产一区免费电影| 欧美一区二区视频观看视频| 午夜久久电影网| 91极品视觉盛宴| 亚洲欧洲制服丝袜| 99精品国产99久久久久久白柏| 欧美激情中文不卡| 国产91精品欧美| 久久久久国色av免费看影院| 极品少妇xxxx精品少妇| 日韩精品在线一区二区| 美女尤物国产一区| 日韩一区二区三区免费看| 婷婷综合五月天| 欧美伊人久久久久久久久影院| 一区二区三区精品视频| 91精品1区2区| 亚洲成av人在线观看| 欧美日韩精品专区| 亚洲图片欧美视频| 欧美军同video69gay| 日日夜夜一区二区| 91精品国产综合久久精品app| 午夜av区久久| 欧美mv日韩mv国产网站app| 精品在线一区二区三区| 亚洲精品在线免费观看视频| 国产一本一道久久香蕉| 国产精品人妖ts系列视频| 99精品在线免费| 亚洲精品视频在线看| 欧美中文字幕一区| 日韩1区2区3区| 精品成人一区二区| 大陆成人av片| 亚洲欧美激情一区二区| 在线亚洲人成电影网站色www| 亚洲第一成人在线| 日韩精品一区国产麻豆| 国产一二三精品| 亚洲欧美成aⅴ人在线观看 | 久久综合av免费| 成人在线综合网| 亚洲激情一二三区| 337p亚洲精品色噜噜狠狠| 国产一区在线观看麻豆| 1000精品久久久久久久久| 欧美日韩美少妇| 国产成人精品aa毛片| 亚洲专区一二三| 欧美成人一区二区三区在线观看| 国产不卡视频在线播放|