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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? sunflowapi.java

?? Sunflow是一個(gè)照片級(jí)的渲染系統(tǒng)
?? JAVA
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
package org.sunflow;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.StringReader;

import org.codehaus.janino.ClassBodyEvaluator;
import org.codehaus.janino.CompileException;
import org.codehaus.janino.Scanner;
import org.codehaus.janino.Parser.ParseException;
import org.codehaus.janino.Scanner.ScanException;
import org.sunflow.core.Camera;
import org.sunflow.core.CameraLens;
import org.sunflow.core.Display;
import org.sunflow.core.Geometry;
import org.sunflow.core.ImageSampler;
import org.sunflow.core.Instance;
import org.sunflow.core.LightSource;
import org.sunflow.core.Modifier;
import org.sunflow.core.Options;
import org.sunflow.core.ParameterList;
import org.sunflow.core.PrimitiveList;
import org.sunflow.core.RenderObject;
import org.sunflow.core.Scene;
import org.sunflow.core.SceneParser;
import org.sunflow.core.Shader;
import org.sunflow.core.Tesselatable;
import org.sunflow.core.ParameterList.InterpolationType;
import org.sunflow.core.parser.RA2Parser;
import org.sunflow.core.parser.RA3Parser;
import org.sunflow.core.parser.SCParser;
import org.sunflow.core.parser.ShaveRibParser;
import org.sunflow.core.parser.TriParser;
import org.sunflow.core.renderer.BucketRenderer;
import org.sunflow.core.renderer.ProgressiveRenderer;
import org.sunflow.core.renderer.SimpleRenderer;
import org.sunflow.image.Color;
import org.sunflow.math.BoundingBox;
import org.sunflow.math.Matrix4;
import org.sunflow.math.Point3;
import org.sunflow.math.Vector3;
import org.sunflow.system.SearchPath;
import org.sunflow.system.Timer;
import org.sunflow.system.UI;
import org.sunflow.system.UI.Module;

/**
 * This API gives a simple interface for creating scenes procedurally. This is
 * the main entry point to Sunflow. To use this class, extend from it and
 * implement the build method which may execute arbitrary code to create a
 * scene.
 */
public class SunflowAPI {
    public static final String VERSION = "0.07.2";
    public static final String DEFAULT_OPTIONS = "::options";

    private Scene scene;
    private BucketRenderer bucketRenderer;
    private ProgressiveRenderer progressiveRenderer;
    private SearchPath includeSearchPath;
    private SearchPath textureSearchPath;
    private ParameterList parameterList;
    private RenderObjectMap renderObjects;
    private int currentFrame;

    /**
     * This is a quick system test which verifies that the user has launched
     * Java properly.
     */
    public static void runSystemCheck() {
        final long RECOMMENDED_MAX_SIZE = 800;
        long maxMb = Runtime.getRuntime().maxMemory() / 1048576;
        if (maxMb < RECOMMENDED_MAX_SIZE)
            UI.printError(Module.API, "JVM available memory is below %d MB (found %d MB only).\nPlease make sure you launched the program with the -Xmx command line options.", RECOMMENDED_MAX_SIZE, maxMb);
        String compiler = System.getProperty("java.vm.name");
        if (compiler == null || !(compiler.contains("HotSpot") && compiler.contains("Server")))
            UI.printError(Module.API, "You do not appear to be running Sun's server JVM\nPerformance may suffer");
        UI.printDetailed(Module.API, "Java environment settings:");
        UI.printDetailed(Module.API, "  * Max memory available : %d MB", maxMb);
        UI.printDetailed(Module.API, "  * Virtual machine name : %s", compiler == null ? "<unknown" : compiler);
        UI.printDetailed(Module.API, "  * Operating system     : %s", System.getProperty("os.name"));
        UI.printDetailed(Module.API, "  * CPU architecture     : %s", System.getProperty("os.arch"));
    }

    /**
     * Creates an empty scene.
     */
    public SunflowAPI() {
        reset();
    }

    /**
     * Reset the state of the API completely. The object table is cleared, and
     * all search paths areset back to their default values.
     */
    public final void reset() {
        scene = new Scene();
        bucketRenderer = new BucketRenderer();
        progressiveRenderer = new ProgressiveRenderer();
        includeSearchPath = new SearchPath("include");
        textureSearchPath = new SearchPath("texture");
        parameterList = new ParameterList();
        renderObjects = new RenderObjectMap();
        currentFrame = 1;
    }

    /**
     * Returns a name currently not being used by any other object. The returned
     * name is of the form "prefix_n" where n is an integer starting at 1. Only
     * a simple linear search is performed, so this method should be used only
     * when there is no other way to guarentee uniqueness.
     * 
     * @param prefix name prefix
     * @return a unique name not used by any rendering object
     */
    public final String getUniqueName(String prefix) {
        // generate a unique name based on the given prefix
        int counter = 1;
        String name;
        do {
            name = String.format("%s_%d", prefix, counter);
            counter++;
        } while (renderObjects.has(name));
        return name;
    }

    /**
     * Declare a parameter with the specified name and value. This parameter
     * will be added to the currently active parameter list.
     * 
     * @param name parameter name
     * @param value parameter value
     */
    public final void parameter(String name, String value) {
        parameterList.addString(name, value);
    }

    /**
     * Declare a parameter with the specified name and value. This parameter
     * will be added to the currently active parameter list.
     * 
     * @param name parameter name
     * @param value parameter value
     */
    public final void parameter(String name, boolean value) {
        parameterList.addBoolean(name, value);
    }

    /**
     * Declare a parameter with the specified name and value. This parameter
     * will be added to the currently active parameter list.
     * 
     * @param name parameter name
     * @param value parameter value
     */
    public final void parameter(String name, int value) {
        parameterList.addInteger(name, value);
    }

    /**
     * Declare a parameter with the specified name and value. This parameter
     * will be added to the currently active parameter list.
     * 
     * @param name parameter name
     * @param value parameter value
     */
    public final void parameter(String name, float value) {
        parameterList.addFloat(name, value);
    }

    /**
     * Declare a parameter with the specified name and value. This parameter
     * will be added to the currently active parameter list.
     * 
     * @param name parameter name
     * @param value parameter value
     */
    public final void parameter(String name, Color value) {
        parameterList.addColor(name, value);
    }

    /**
     * Declare a parameter with the specified name and value. This parameter
     * will be added to the currently active parameter list.
     * 
     * @param name parameter name
     * @param value parameter value
     */
    public final void parameter(String name, Point3 value) {
        parameterList.addPoints(name, InterpolationType.NONE, new float[] {
                value.x, value.y, value.z });
    }

    /**
     * Declare a parameter with the specified name and value. This parameter
     * will be added to the currently active parameter list.
     * 
     * @param name parameter name
     * @param value parameter value
     */
    public final void parameter(String name, Vector3 value) {
        parameterList.addVectors(name, InterpolationType.NONE, new float[] {
                value.x, value.y, value.z });
    }

    /**
     * Declare a parameter with the specified name and value. This parameter
     * will be added to the currently active parameter list.
     * 
     * @param name parameter name
     * @param value parameter value
     */
    public final void parameter(String name, Matrix4 value) {
        parameterList.addMatrices(name, InterpolationType.NONE, value.asRowMajor());
    }

    /**
     * Declare a parameter with the specified name and value. This parameter
     * will be added to the currently active parameter list.
     * 
     * @param name parameter name
     * @param value parameter value
     */
    public final void parameter(String name, int[] value) {
        parameterList.addIntegerArray(name, value);
    }

    /**
     * Declare a parameter with the specified name and value. This parameter
     * will be added to the currently active parameter list.
     * 
     * @param name parameter name
     * @param value parameter value
     */
    public final void parameter(String name, String[] value) {
        parameterList.addStringArray(name, value);
    }

    /**
     * Declare a parameter with the specified name. The type may be one of the
     * follow: "float", "point", "vector", "texcoord", "matrix". The
     * interpolation determines how the parameter is to be interpreted over
     * surface (see {@link InterpolationType}). The data is specified in a
     * flattened float array.
     * 
     * @param name parameter name
     * @param type parameter data type
     * @param interpolation parameter interpolation mode
     * @param data raw floating point data
     */
    public final void parameter(String name, String type, String interpolation, float[] data) {
        InterpolationType interp;
        try {
            interp = InterpolationType.valueOf(interpolation.toUpperCase());
        } catch (IllegalArgumentException e) {
            UI.printError(Module.API, "Unknown interpolation type: %s -- ignoring parameter \"%s\"", interpolation, name);
            return;
        }
        if (type.equals("float"))
            parameterList.addFloats(name, interp, data);
        else if (type.equals("point"))
            parameterList.addPoints(name, interp, data);
        else if (type.equals("vector"))
            parameterList.addVectors(name, interp, data);
        else if (type.equals("texcoord"))
            parameterList.addTexCoords(name, interp, data);
        else if (type.equals("matrix"))
            parameterList.addMatrices(name, interp, data);
        else
            UI.printError(Module.API, "Unknown parameter type: %s -- ignoring parameter \"%s\"", type, name);
    }

    /**
     * Remove the specified render object. Note that this may cause the removal
     * of other objects which depended on it.
     * 
     * @param name name of the object to remove

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91一区二区在线| 久久综合九色综合久久久精品综合 | 色94色欧美sute亚洲线路一久| 国产一区二区三区久久悠悠色av| 日韩av电影免费观看高清完整版在线观看| 亚洲欧美视频在线观看视频| 中文字幕精品一区二区三区精品| 久久午夜色播影院免费高清| wwwwxxxxx欧美| 欧美激情综合网| 中文字幕在线不卡| 亚洲精品中文字幕乱码三区| 中文字幕综合网| 亚洲精品免费看| 亚洲成av人影院在线观看网| 亚洲综合一区二区| 日本 国产 欧美色综合| 蜜臀91精品一区二区三区| 国产毛片精品一区| www.欧美日韩国产在线| 在线精品视频小说1| 欧美一区二区三区在| 日韩免费一区二区三区在线播放| 精品国产制服丝袜高跟| 日本一区二区久久| 亚洲国产乱码最新视频| 久久狠狠亚洲综合| av中文字幕在线不卡| 91久久免费观看| 日韩欧美国产一区在线观看| 国产精品入口麻豆九色| 伊人夜夜躁av伊人久久| 久久99精品网久久| 91免费精品国自产拍在线不卡| 欧美日韩美少妇| 久久日韩粉嫩一区二区三区| 中文字幕亚洲精品在线观看| 日韩精品每日更新| 成人av电影免费在线播放| 欧美日本国产一区| 日本一二三不卡| 青青青伊人色综合久久| 99久久久精品免费观看国产蜜| 欧美亚洲尤物久久| 中文字幕第一区| 日本成人中文字幕在线视频| 97精品久久久午夜一区二区三区| 欧美大白屁股肥臀xxxxxx| 亚洲欧洲三级电影| 国产成人亚洲综合a∨婷婷| 欧美色图免费看| 国产精品进线69影院| 麻豆久久久久久久| 精品视频免费看| 亚洲免费三区一区二区| 国产伦精品一区二区三区免费迷 | 欧美日韩美少妇| 欧美高清在线精品一区| 国内精品伊人久久久久av一坑 | 久久在线观看免费| 日本中文一区二区三区| 欧美午夜电影网| 亚洲图片欧美激情| 成人免费视频国产在线观看| 久久―日本道色综合久久| 美女精品一区二区| 91精品国产91久久久久久最新毛片| 亚洲男同性恋视频| 91丨国产丨九色丨pron| 中文字幕国产精品一区二区| 国产精品自拍av| 久久久久久99久久久精品网站| 久久66热偷产精品| 日韩久久精品一区| 韩国成人精品a∨在线观看| 日韩欧美一级二级三级久久久| 五月综合激情婷婷六月色窝| 欧美三级中文字| 亚洲成人自拍网| 欧美日韩国产在线观看| 午夜精品久久久久久久99水蜜桃 | 日本不卡一区二区三区高清视频| 欧美日韩一区二区在线视频| 亚洲chinese男男1069| 欧美亚洲国产一区二区三区va | 麻豆一区二区99久久久久| 日韩免费电影一区| 国产成人免费在线视频| 中文字幕在线一区二区三区| www.欧美日韩| 亚洲精品国产高清久久伦理二区| 91成人看片片| 日本不卡123| 国产色产综合产在线视频| 成人18视频在线播放| 亚洲欧洲成人自拍| 宅男噜噜噜66一区二区66| 久久精品72免费观看| 欧美经典一区二区| 欧洲av在线精品| 日韩电影一二三区| 日本一区二区免费在线观看视频 | 麻豆精品久久久| 国产精品私人影院| 色婷婷av一区二区三区软件 | 三级不卡在线观看| 久久久久久久久久久99999| 99精品视频免费在线观看| 亚洲一二三四在线观看| 精品国产伦一区二区三区观看方式| 国产美女久久久久| 亚洲在线视频免费观看| 欧美精品一区二区三区蜜桃视频| 粉嫩一区二区三区性色av| 亚洲国产欧美日韩另类综合 | 成人美女视频在线观看| 一区二区三区鲁丝不卡| 久久免费视频一区| 欧美日韩中文另类| 成人午夜又粗又硬又大| 五月天精品一区二区三区| 日本一区二区三区在线不卡| 欧美美女一区二区| 成人性生交大片| 久久国产福利国产秒拍| 一区二区三区国产| 国产精品丝袜在线| 久久久久久久久久久黄色| 精品视频在线免费| 成人av中文字幕| 极品少妇一区二区| 天堂va蜜桃一区二区三区漫画版| 国产精品午夜在线观看| 精品美女一区二区三区| 欧美日韩一区二区在线观看视频 | 亚洲欧美精品午睡沙发| 欧美不卡一二三| 欧美日韩夫妻久久| 在线中文字幕一区二区| 成人高清在线视频| 精品一区二区久久| 美国精品在线观看| 日韩av在线播放中文字幕| 亚洲一二三四在线观看| 一区二区三区国产| 亚洲一区二区三区在线播放| 国产精品国产自产拍高清av王其| 久久人人超碰精品| 久久综合狠狠综合| 欧美mv日韩mv| 久久久久久久综合日本| 日韩欧美一区二区在线视频| 制服丝袜av成人在线看| 欧美精品久久久久久久多人混战 | 成人理论电影网| 国产成人亚洲综合a∨婷婷图片 | 欧美日本免费一区二区三区| 91福利视频久久久久| 欧美日韩欧美一区二区| 精品视频色一区| 91麻豆精品国产91久久久更新时间| 欧美日韩视频在线第一区| 欧美日韩亚洲综合在线 | 韩国v欧美v亚洲v日本v| 国产资源精品在线观看| 国产黄色精品视频| 国产99久久久国产精品潘金| 成人av电影在线播放| 色综合久久久网| 制服丝袜亚洲精品中文字幕| 欧美一二三区精品| 国产亚洲美州欧州综合国| 欧美国产97人人爽人人喊| 亚洲乱码中文字幕综合| 日韩精品亚洲专区| 国产suv精品一区二区6| 日本乱人伦一区| 日韩视频免费观看高清完整版| 精品福利二区三区| 国产精品超碰97尤物18| 亚洲精品水蜜桃| 日本不卡视频一二三区| 丁香六月综合激情| 欧美日韩在线三区| 国产香蕉久久精品综合网| 亚洲图片欧美激情| 免费在线欧美视频| 99视频超级精品| 这里只有精品电影| 综合激情网...| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产一区二区成人久久免费影院| 91欧美激情一区二区三区成人| 51精品视频一区二区三区| 中文字幕一区二区三区视频| 日韩国产欧美在线播放| www.av亚洲| 欧美精品一区二区三区蜜臀| 亚洲一区二区黄色| 成人sese在线|