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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? maxloader.java

?? world wind java sdk load 3D model
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/*
 * MaxLoader.java
 *
 * Created on February 12, 2008, 10:19 PM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package model;

import java.awt.Color;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

/**
 *
 * @author RodgersGB
 * modifications made by Brian Wood
 */
class MaxLoader implements MaxConstants {
    private File file;
    private String baseDir;
    private boolean loaded = false;
    private FileInputStream fileInputStream;
    private DataInputStream dataInputStream;
    private Model3D.BoundingBox boundingBox = null;
    private float minx, maxx, miny, maxy, minz, maxz;
    
// Global chunks
    private Chunk currentChunk, tempChunk;
    
// the model
    private Model3D model = null;
    
    // Constructor
    public MaxLoader() {
        currentChunk = new Chunk();
        tempChunk = new Chunk();
        model = new Model3D();
    }
    
    // Verified
    public Model3D load(String path) throws IOException {
        String strMessage;
        
        String tokens[] = path.split("/");
        baseDir = "/";
        for(int i = 0; i < tokens.length - 1; i++) {
            baseDir += tokens[i] + "/";
        }
        
        dataInputStream = new DataInputStream(MaxLoader.class.getResourceAsStream("/" + path));
        
        if(dataInputStream == null){
            return null;
        }
        
        readChunkHeader(currentChunk);
        
        if (currentChunk.id != TYPE_3DS_FILE) {
            System.err.println("Unable to load PRIMARY chuck from file!");
            return null;
        }
        
        processNextChunk(currentChunk);
        
        //computeNormals();
        
        model.setBoundingBox(new Model3D.BoundingBox(minx, maxx, miny, maxy, minz, maxz));
        
        dataInputStream.close();
        
        return model;
    }
    
    private void processNextChunk(Chunk root) throws IOException {
        int version = 0;
        byte buffer[] = null;
        
        currentChunk = new Chunk();
        
        while (root.bytesRead < root.length) {
            readChunkHeader(currentChunk);
            
            switch (currentChunk.id) {
                case TYPE_3DS_VERSION:
                    version = readInt(currentChunk);
                    
                    if (version > 0x03)
                        System.err.println("This 3DS file is over version 3 so it may load incorrectly");
                    break;
                    
                case TYPE_MESH_DATA:
                    readChunkHeader(tempChunk);
                    readBytes(tempChunk, tempChunk.length - tempChunk.bytesRead);
                    currentChunk.bytesRead += tempChunk.bytesRead;
                    processNextChunk(currentChunk);
                    break;
                    
                case TYPE_MATERIAL:
                    Model3D.Material m = new Model3D.Material();
                    processMaterial(m, currentChunk);
                    model.addMaterial(m);
                    break;
                    
                case TYPE_NAMED_OBJECT:
                    Model3D.ModelObject obj = new Model3D.ModelObject();
                    obj.name = readString(currentChunk);
                    getObjectChunk(obj, currentChunk);
                    model.addObject(obj);
                    break;
                    
                case TYPE_KEY_FRAME:
                    processKeyFrame(currentChunk);
                    break;
                    
                default:
                    readBytes(currentChunk, currentChunk.length - currentChunk.bytesRead);
                    break;
            }
            root.bytesRead += currentChunk.bytesRead;
        }
        
        currentChunk = root;
    }
    
    private void processKeyFrame(Chunk root) throws IOException {
        currentChunk = new Chunk();
        
        while (root.bytesRead < root.length) {
            readChunkHeader(currentChunk);
            
            switch (currentChunk.id) {
                default:
                    readBytes(currentChunk, currentChunk.length - currentChunk.bytesRead);
                    break;
            }
            root.bytesRead += currentChunk.bytesRead;
        }
        currentChunk = root;
    }
    
    private void readChunkHeader(Chunk c) throws IOException {
        c.bytesRead = 0;
        c.id = this.readShort(c);
        c.length = this.readInt(c);
    }
    
    private void getObjectChunk(Model3D.ModelObject object, Chunk root) throws IOException {
        currentChunk = new Chunk();
        
        while (root.bytesRead < root.length) {
            readChunkHeader(currentChunk);
            
            switch (currentChunk.id) {
                case TYPE_TRIANGLE_OBJECT:
                    getObjectChunk(object, currentChunk);
                    break;
                    
                case TYPE_DIRECT_LIGHT:
                    readBytes(currentChunk, currentChunk.length - currentChunk.bytesRead);
                    break;
                    
                case TYPE_POINT_LIST:
                    readVertices(object, currentChunk);
                    break;
                    
                case TYPE_FACE_LIST:
                    readFaceList(object, currentChunk);
                    break;
                    
                case TYPE_MAT_FACE_LIST:
                    readObjectMaterial(object, currentChunk);
                    readBytes(currentChunk, currentChunk.length - currentChunk.bytesRead);
                    break;
                    
                case TYPE_MAT_UV:
                    object.hasTexture = true;
                    model.addMaterial(new Model3D.Material());
                    object.materialID = 0;
                    readUVCoordinates(object, currentChunk);
                    break;
                    
                default:
                    readBytes(currentChunk, currentChunk.length - currentChunk.bytesRead);
                    break;
            }
            root.bytesRead += currentChunk.bytesRead;
        }
        
        currentChunk = root;
    }
    
    private void processMaterial(Model3D.Material material, Chunk root) throws IOException {
        byte buffer[] = null;
        
        currentChunk = new Chunk();
        
        while (root.bytesRead < root.length) {
            readChunkHeader(currentChunk);
            
            switch (currentChunk.id) {
                case TYPE_MATERIAL_NAME:
                    material.name = readString(currentChunk);
                    readBytes(currentChunk, currentChunk.length - currentChunk.bytesRead);
                    break;
                    
                case TYPE_MAT_AMBIENT:
                    material.setAmbientColor(readColor(currentChunk));
                    break;
                    
                case TYPE_MAT_SPECULAR:
                    material.setSpecularColor(readColor(currentChunk));
                    break;
                    
                case TYPE_MAT_DIFFUSE:
                    material.setDiffuseColor(readColor(currentChunk));
                    break;
                    
                case TYPE_MAT_SHININESS:
                    float shin = 1.0f+127.0f*readPercentage(currentChunk);
                    material.setShininess(shin);
                    break;
                    
                case TYPE_MAT_SHININESS2:
                    float shin2 = 1.0f+127.0f*readPercentage(currentChunk);
                    break;
                    
                case TYPE_MAT_TRANSPARENCY:
                    float trans = readPercentage(currentChunk);
                    break;
                    
                case TYPE_MAT_2_SIDED:
                    readBytes(currentChunk, currentChunk.length - currentChunk.bytesRead);
                    break;
                    

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区免费视频| 精品精品欲导航| 成人免费在线播放视频| 国产精品123| 欧美精品一区在线观看| 麻豆精品久久久| 日韩精品中文字幕一区二区三区| 午夜日韩在线观看| 欧美日韩国产中文| 日韩不卡手机在线v区| 宅男在线国产精品| 日韩av中文字幕一区二区三区| 欧美美女黄视频| 午夜视频在线观看一区| 色诱亚洲精品久久久久久| 中文字幕一区二区5566日韩| 99精品视频一区二区| 亚洲精品欧美专区| 欧洲精品中文字幕| 婷婷中文字幕一区三区| 欧美电影一区二区三区| 婷婷成人综合网| 日韩一区二区麻豆国产| 另类的小说在线视频另类成人小视频在线 | 国产精品二区一区二区aⅴ污介绍| 国产一区不卡精品| 国产欧美1区2区3区| 国产一区二区伦理| 中日韩免费视频中文字幕| 色婷婷一区二区| 秋霞电影网一区二区| 日韩欧美色电影| 国产a视频精品免费观看| 国产精品成人在线观看| 欧美亚洲国产一卡| 另类的小说在线视频另类成人小视频在线| 日韩免费观看高清完整版在线观看| 激情综合色综合久久综合| 国产欧美精品一区二区色综合| 成人av在线网站| 亚洲午夜在线电影| 精品国产伦一区二区三区观看体验| 国产精品一二三区| 亚洲三级在线免费| 制服丝袜在线91| 成人夜色视频网站在线观看| 亚洲日穴在线视频| 欧美一级夜夜爽| 成人午夜av影视| 日本一不卡视频| 中文在线一区二区| 欧美日韩精品专区| 成人美女视频在线观看18| 一区二区三区在线免费播放| 亚洲精品一区二区在线观看| 91免费视频大全| 紧缚奴在线一区二区三区| 欧美国产日韩在线观看| 制服丝袜中文字幕一区| 91啪在线观看| 国产一区二区网址| 日韩精品乱码免费| 亚洲人成网站精品片在线观看 | 亚洲国产精品一区二区久久| 精品国产一区久久| 欧美性大战久久久久久久蜜臀| 国产一区二区在线看| 午夜视频一区二区| 一区二区三区四区中文字幕| 精品成人a区在线观看| 欧美午夜电影在线播放| 成人av免费在线观看| 麻豆一区二区99久久久久| 亚洲午夜激情网页| 日韩毛片精品高清免费| 亚洲男同性视频| 亚洲日本欧美天堂| 亚洲一区二区av电影| 亚洲午夜在线视频| 日本午夜精品视频在线观看| 日韩av在线播放中文字幕| 免费看欧美美女黄的网站| 精品制服美女久久| 国产一区二区不卡在线| 国产91精品在线观看| 成人av高清在线| 色婷婷综合五月| 欧美精品丝袜久久久中文字幕| 欧美日韩1区2区| 日韩一区二区免费视频| 26uuu精品一区二区在线观看| 欧美精品一区二区三区蜜桃| 国产女同互慰高潮91漫画| 中文字幕在线一区| 亚洲一二三专区| 日本中文一区二区三区| 久久精品国产精品亚洲综合| 国产精品夜夜爽| 色综合久久综合| 欧美日韩亚洲综合在线| 精品99久久久久久| 中文字幕日韩一区二区| 天堂va蜜桃一区二区三区漫画版| 久久99精品一区二区三区| 久久福利视频一区二区| 99久久精品免费看国产免费软件| 欧美日韩一级黄| 2019国产精品| 亚洲综合成人在线视频| 美女免费视频一区| 99视频精品免费视频| 欧美日韩在线一区二区| 精品999在线播放| 亚洲三级在线播放| 久久9热精品视频| 97se狠狠狠综合亚洲狠狠| 在线不卡中文字幕播放| 欧美激情一区在线观看| 亚洲国产精品久久久男人的天堂| 国产精品中文字幕一区二区三区| 91国产成人在线| 欧美一级欧美一级在线播放| 精品成人一区二区三区四区| 欧美日韩免费一区二区三区视频 | 久久无码av三级| 亚洲欧洲日韩在线| 免费高清在线一区| 成人av在线网| 精品免费国产二区三区| 亚洲在线视频一区| 丁香婷婷综合色啪| 欧美一级片在线看| 一区二区激情小说| 成人综合在线网站| 日韩美一区二区三区| 亚洲国产精品一区二区久久恐怖片| 国产成人a级片| 日韩欧美视频一区| 五月天丁香久久| 91麻豆国产在线观看| 国产日韩欧美精品一区| 久久99蜜桃精品| 91精品国产综合久久久久久漫画| 亚洲人123区| 成人免费视频app| 国产日韩欧美亚洲| 经典三级视频一区| 日韩三级高清在线| 天堂蜜桃一区二区三区| 欧美色大人视频| 亚洲视频免费观看| av一区二区三区在线| 欧美激情中文不卡| 国产精品 日产精品 欧美精品| 精品久久五月天| 久久精品99国产精品| 欧美tickle裸体挠脚心vk| 五月天一区二区三区| 欧美午夜影院一区| 亚洲蜜臀av乱码久久精品| www.性欧美| 国产精品区一区二区三区| 国产成a人亚洲精品| 国产欧美日韩三区| 国产成人在线看| 国产精品人人做人人爽人人添| 国产一区二区三区最好精华液| 日韩一级完整毛片| 麻豆精品一二三| 久久亚洲一级片| 高清国产一区二区| 国产精品色在线观看| 成人黄色小视频| 日本一区二区三区在线不卡| 国产69精品一区二区亚洲孕妇| 中文字幕免费一区| 99国产欧美另类久久久精品| 亚洲精品欧美激情| 欧美日韩亚洲不卡| 久久精品国产亚洲a| 久久精品一区蜜桃臀影院| 丁香天五香天堂综合| 国产精品电影一区二区| 欧美在线高清视频| 五月天视频一区| 欧美精品一区二区三区四区| 成人天堂资源www在线| 亚洲老司机在线| 欧美一区二区三区视频免费播放| 久久99精品久久久久久国产越南| 免费观看日韩av| 欧美精品在线一区二区三区| 久久国产综合精品| 国产精品色婷婷| 欧美羞羞免费网站| 国内精品免费在线观看| 中文字幕一区二区三区色视频| 91成人看片片| 国产一区激情在线| 亚洲天堂久久久久久久|