Search in sources :

Example 1 with Texture

use of org.rajawali3d.materials.textures.Texture in project Rajawali by Rajawali.

the class RajawaliVRExampleRenderer method initScene.

@Override
public void initScene() {
    DirectionalLight light = new DirectionalLight(0.2f, -1f, 0f);
    light.setPower(.7f);
    getCurrentScene().addLight(light);
    light = new DirectionalLight(0.2f, 1f, 0f);
    light.setPower(1f);
    getCurrentScene().addLight(light);
    getCurrentCamera().setFarPlane(1000);
    getCurrentScene().setBackgroundColor(0xdddddd);
    createTerrain();
    try {
        getCurrentScene().setSkybox(R.drawable.posx, R.drawable.negx, R.drawable.posy, R.drawable.negy, R.drawable.posz, R.drawable.negz);
        LoaderAWD loader = new LoaderAWD(getContext().getResources(), getTextureManager(), R.raw.space_cruiser);
        loader.parse();
        Material cruiserMaterial = new Material();
        cruiserMaterial.setDiffuseMethod(new DiffuseMethod.Lambert());
        cruiserMaterial.setColorInfluence(0);
        cruiserMaterial.enableLighting(true);
        cruiserMaterial.addTexture(new Texture("spaceCruiserTex", R.drawable.space_cruiser_4_color_1));
        Object3D spaceCruiser = loader.getParsedObject();
        spaceCruiser.setMaterial(cruiserMaterial);
        spaceCruiser.setZ(-6);
        spaceCruiser.setY(1);
        getCurrentScene().addChild(spaceCruiser);
        spaceCruiser = spaceCruiser.clone(true);
        spaceCruiser.setZ(-12);
        spaceCruiser.setY(-3);
        spaceCruiser.setRotY(180);
        getCurrentScene().addChild(spaceCruiser);
        loader = new LoaderAWD(getContext().getResources(), getTextureManager(), R.raw.dark_fighter);
        loader.parse();
        Material darkFighterMaterial = new Material();
        darkFighterMaterial.setDiffuseMethod(new DiffuseMethod.Lambert());
        darkFighterMaterial.setColorInfluence(0);
        darkFighterMaterial.enableLighting(true);
        darkFighterMaterial.addTexture(new Texture("darkFighterTex", R.drawable.dark_fighter_6_color));
        Object3D darkFighter = loader.getParsedObject();
        darkFighter.setMaterial(darkFighterMaterial);
        darkFighter.setZ(-6);
        getCurrentScene().addChild(darkFighter);
        CatmullRomCurve3D path = new CatmullRomCurve3D();
        path.addPoint(new Vector3(0, -5, -10));
        path.addPoint(new Vector3(10, -5, 0));
        path.addPoint(new Vector3(0, -4, 8));
        path.addPoint(new Vector3(-16, -6, 0));
        path.isClosedCurve(true);
        SplineTranslateAnimation3D anim = new SplineTranslateAnimation3D(path);
        anim.setDurationMilliseconds(44000);
        anim.setRepeatMode(RepeatMode.INFINITE);
        // -- orient to path
        anim.setOrientToPath(true);
        anim.setTransformable3D(darkFighter);
        getCurrentScene().registerAnimation(anim);
        anim.play();
        loader = new LoaderAWD(getContext().getResources(), getTextureManager(), R.raw.capital);
        loader.parse();
        Material capitalMaterial = new Material();
        capitalMaterial.setDiffuseMethod(new DiffuseMethod.Lambert());
        capitalMaterial.setColorInfluence(0);
        capitalMaterial.enableLighting(true);
        capitalMaterial.addTexture(new Texture("capitalTex", R.drawable.hullw));
        capitalMaterial.addTexture(new NormalMapTexture("capitalNormTex", R.drawable.hulln));
        capital = loader.getParsedObject();
        capital.setMaterial(capitalMaterial);
        capital.setScale(18);
        getCurrentScene().addChild(capital);
        path = new CatmullRomCurve3D();
        path.addPoint(new Vector3(0, 13, 34));
        path.addPoint(new Vector3(34, 13, 0));
        path.addPoint(new Vector3(0, 13, -34));
        path.addPoint(new Vector3(-34, 13, 0));
        path.isClosedCurve(true);
        anim = new SplineTranslateAnimation3D(path);
        anim.setDurationMilliseconds(60000);
        anim.setRepeatMode(RepeatMode.INFINITE);
        anim.setOrientToPath(true);
        anim.setTransformable3D(capital);
        getCurrentScene().registerAnimation(anim);
        anim.play();
    } catch (Exception e) {
        e.printStackTrace();
    }
    lookatSphere = new Sphere(1, 12, 12);
    Material sphereMaterial = new Material();
    sphereMaterial.setDiffuseMethod(new DiffuseMethod.Lambert());
    sphereMaterial.enableLighting(true);
    lookatSphere.setMaterial(sphereMaterial);
    lookatSphere.setColor(Color.YELLOW);
    lookatSphere.setPosition(0, 0, -6);
    getCurrentScene().addChild(lookatSphere);
    initAudio();
}
Also used : LoaderAWD(org.rajawali3d.loader.LoaderAWD) Material(org.rajawali3d.materials.Material) Vector3(org.rajawali3d.math.vector.Vector3) NormalMapTexture(org.rajawali3d.materials.textures.NormalMapTexture) Texture(org.rajawali3d.materials.textures.Texture) NormalMapTexture(org.rajawali3d.materials.textures.NormalMapTexture) SplineTranslateAnimation3D(org.rajawali3d.animation.SplineTranslateAnimation3D) TextureException(org.rajawali3d.materials.textures.ATexture.TextureException) Object3D(org.rajawali3d.Object3D) Sphere(org.rajawali3d.primitives.Sphere) CatmullRomCurve3D(org.rajawali3d.curves.CatmullRomCurve3D) DirectionalLight(org.rajawali3d.lights.DirectionalLight) DiffuseMethod(org.rajawali3d.materials.methods.DiffuseMethod)

Example 2 with Texture

use of org.rajawali3d.materials.textures.Texture in project Rajawali by Rajawali.

the class RajawaliVRExampleRenderer method createTerrain.

public void createTerrain() {
    //
    // -- Load a bitmap that represents the terrain. Its color values will
    //    be used to generate heights.
    //
    Bitmap bmp = BitmapFactory.decodeResource(getContext().getResources(), R.drawable.terrain);
    try {
        SquareTerrain.Parameters terrainParams = SquareTerrain.createParameters(bmp);
        // -- set terrain scale
        terrainParams.setScale(4f, 54f, 4f);
        // -- the number of plane subdivisions
        terrainParams.setDivisions(128);
        // -- the number of times the textures should be repeated
        terrainParams.setTextureMult(4);
        //
        // -- Terrain colors can be set by manually specifying base, middle and
        //    top colors.
        //
        // --  terrainParams.setBasecolor(Color.argb(255, 0, 0, 0));
        //     terrainParams.setMiddleColor(Color.argb(255, 200, 200, 200));
        //     terrainParams.setUpColor(Color.argb(255, 0, 30, 0));
        //
        // -- However, for this example we'll use a bitmap
        //
        terrainParams.setColorMapBitmap(bmp);
        //
        // -- create the terrain
        //
        terrain = TerrainGenerator.createSquareTerrainFromBitmap(terrainParams, true);
    } catch (Exception e) {
        e.printStackTrace();
    }
    //
    // -- The bitmap won't be used anymore, so get rid of it.
    //
    bmp.recycle();
    //
    // -- A normal map material will give the terrain a bit more detail.
    //
    Material material = new Material();
    material.enableLighting(true);
    material.useVertexColors(true);
    material.setDiffuseMethod(new DiffuseMethod.Lambert());
    try {
        Texture groundTexture = new Texture("ground", R.drawable.ground);
        groundTexture.setInfluence(.5f);
        material.addTexture(groundTexture);
        material.addTexture(new NormalMapTexture("groundNormalMap", R.drawable.groundnor));
        material.setColorInfluence(0);
    } catch (TextureException e) {
        e.printStackTrace();
    }
    //
    // -- Blend the texture with the vertex colors
    //
    material.setColorInfluence(.5f);
    terrain.setY(-100);
    terrain.setMaterial(material);
    getCurrentScene().addChild(terrain);
}
Also used : Bitmap(android.graphics.Bitmap) TextureException(org.rajawali3d.materials.textures.ATexture.TextureException) SquareTerrain(org.rajawali3d.terrain.SquareTerrain) DiffuseMethod(org.rajawali3d.materials.methods.DiffuseMethod) Material(org.rajawali3d.materials.Material) NormalMapTexture(org.rajawali3d.materials.textures.NormalMapTexture) Texture(org.rajawali3d.materials.textures.Texture) NormalMapTexture(org.rajawali3d.materials.textures.NormalMapTexture) TextureException(org.rajawali3d.materials.textures.ATexture.TextureException)

Example 3 with Texture

use of org.rajawali3d.materials.textures.Texture in project Rajawali by Rajawali.

the class LoaderFBX method setMeshTextures.

private void setMeshTextures(Object3D o, String name) throws TextureException, ParsingException {
    Stack<FBXValues.Objects.Texture> textures = mFbx.objects.textures;
    Stack<Connect> connections = mFbx.connections.connections;
    int numTex = textures.size();
    int numCon = connections.size();
    for (int i = 0; i < numTex; ++i) {
        FBXValues.Objects.Texture tex = textures.get(i);
        for (int j = 0; j < numCon; ++j) {
            Connect conn = connections.get(j);
            if (conn.object2.equals(name) && conn.object1.equals(tex.textureName)) {
                // -- one texture for now
                String textureName = tex.fileName;
                Bitmap bitmap = null;
                if (mFile == null) {
                    int identifier = mResources.getIdentifier(getFileNameWithoutExtension(textureName).toLowerCase(Locale.US), "drawable", mResources.getResourcePackageName(mResourceId));
                    bitmap = BitmapFactory.decodeResource(mResources, identifier);
                } else {
                    try {
                        String filePath = mFile.getParent() + File.separatorChar + getOnlyFileName(textureName);
                        bitmap = BitmapFactory.decodeFile(filePath);
                    } catch (Exception e) {
                        throw new ParsingException("[" + getClass().getCanonicalName() + "] Could not find file " + getOnlyFileName(textureName));
                    }
                }
                o.getMaterial().setColorInfluence(0);
                o.getMaterial().addTexture(new Texture(textureName.replaceAll("[\\W]|_", ""), bitmap));
                return;
            }
        }
    }
}
Also used : Bitmap(android.graphics.Bitmap) Connect(org.rajawali3d.loader.fbx.FBXValues.Connections.Connect) ParsingException(org.rajawali3d.loader.ParsingException) Texture(org.rajawali3d.materials.textures.Texture) TextureException(org.rajawali3d.materials.textures.ATexture.TextureException) ParsingException(org.rajawali3d.loader.ParsingException) IOException(java.io.IOException) FileNotFoundException(java.io.FileNotFoundException) InvocationTargetException(java.lang.reflect.InvocationTargetException)

Example 4 with Texture

use of org.rajawali3d.materials.textures.Texture in project Rajawali by Rajawali.

the class LoaderMD2 method parse.

public LoaderMD2 parse() throws ParsingException {
    super.parse();
    BufferedInputStream stream = null;
    if (mFile == null) {
        InputStream fileIn = mResources.openRawResource(mResourceId);
        stream = new BufferedInputStream(fileIn);
    } else {
        try {
            stream = new BufferedInputStream(new FileInputStream(mFile));
        } catch (FileNotFoundException e) {
            RajLog.e("[" + getClass().getCanonicalName() + "] Could not find file.");
            throw new ParsingException(e);
        }
    }
    mObject = new VertexAnimationObject3D();
    mObject.setFps(10);
    mHeader = new MD2Header();
    try {
        mHeader.parse(stream);
        mFrames = new Stack<IAnimationFrame>();
        for (int i = 0; i < mHeader.numFrames; ++i) mFrames.add(new VertexAnimationFrame());
        byte[] bytes = new byte[mHeader.offsetEnd - 68];
        stream.read(bytes);
        getMaterials(stream, bytes);
        float[] texCoords = getTexCoords(stream, bytes);
        getFrames(stream, bytes);
        getTriangles(stream, bytes, texCoords);
        mObject.setFrames(mFrames);
        IAnimationFrame firstFrame = mFrames.get(0);
        Material material = new Material();
        material.enableLighting(true);
        material.setDiffuseMethod(new DiffuseMethod.Lambert());
        material.addPlugin(new VertexAnimationMaterialPlugin());
        mObject.getGeometry().copyFromGeometry3D(firstFrame.getGeometry());
        mObject.setData(firstFrame.getGeometry().getVertexBufferInfo(), firstFrame.getGeometry().getNormalBufferInfo(), mTextureCoords, null, mIndices, false);
        mObject.setMaterial(material);
        mObject.setColor(0xffffffff);
        if (mTexture != null) {
            material.addTexture(new Texture(mCurrentTextureName, mTexture));
            material.setColorInfluence(0);
        }
        stream.close();
    } catch (Exception e) {
        throw new ParsingException(e);
    }
    mObject.isContainer(false);
    mRootObject = mObject;
    return this;
}
Also used : BufferedInputStream(java.io.BufferedInputStream) ByteArrayInputStream(java.io.ByteArrayInputStream) LittleEndianDataInputStream(org.rajawali3d.util.LittleEndianDataInputStream) FileInputStream(java.io.FileInputStream) InputStream(java.io.InputStream) IAnimationFrame(org.rajawali3d.animation.mesh.IAnimationFrame) FileNotFoundException(java.io.FileNotFoundException) Material(org.rajawali3d.materials.Material) Texture(org.rajawali3d.materials.textures.Texture) FileInputStream(java.io.FileInputStream) VertexAnimationMaterialPlugin(org.rajawali3d.materials.plugins.VertexAnimationMaterialPlugin) IOException(java.io.IOException) FileNotFoundException(java.io.FileNotFoundException) BufferedInputStream(java.io.BufferedInputStream) VertexAnimationObject3D(org.rajawali3d.animation.mesh.VertexAnimationObject3D) DiffuseMethod(org.rajawali3d.materials.methods.DiffuseMethod) VertexAnimationFrame(org.rajawali3d.animation.mesh.VertexAnimationFrame)

Example 5 with Texture

use of org.rajawali3d.materials.textures.Texture in project Rajawali by Rajawali.

the class WallpaperRenderer method initScene.

@Override
protected void initScene() {
    ALight light = new DirectionalLight(-1, 0, -1);
    light.setPower(2);
    getCurrentScene().addLight(light);
    getCurrentCamera().setPosition(0, 0, 7);
    getCurrentCamera().setLookAt(0, 0, 0);
    try {
        Cube cube = new Cube(1);
        Material material = new Material();
        material.enableLighting(true);
        material.setDiffuseMethod(new DiffuseMethod.Lambert());
        material.addTexture(new Texture("rajawaliTex", R.drawable.rajawali_tex));
        material.setColorInfluence(0);
        cube.setMaterial(material);
        getCurrentScene().addChild(cube);
        Vector3 axis = new Vector3(3, 1, 6);
        axis.normalize();
        Animation3D anim = new RotateOnAxisAnimation(axis, 0, 360);
        anim.setDurationMilliseconds(8000);
        anim.setRepeatMode(Animation.RepeatMode.INFINITE);
        anim.setInterpolator(new AccelerateDecelerateInterpolator());
        anim.setTransformable3D(cube);
        getCurrentScene().registerAnimation(anim);
        anim.play();
    } catch (ATexture.TextureException e) {
        e.printStackTrace();
    }
}
Also used : Material(org.rajawali3d.materials.Material) Vector3(org.rajawali3d.math.vector.Vector3) ATexture(org.rajawali3d.materials.textures.ATexture) Texture(org.rajawali3d.materials.textures.Texture) Animation3D(org.rajawali3d.animation.Animation3D) Cube(org.rajawali3d.primitives.Cube) RotateOnAxisAnimation(org.rajawali3d.animation.RotateOnAxisAnimation) DirectionalLight(org.rajawali3d.lights.DirectionalLight) ATexture(org.rajawali3d.materials.textures.ATexture) DiffuseMethod(org.rajawali3d.materials.methods.DiffuseMethod) AccelerateDecelerateInterpolator(android.view.animation.AccelerateDecelerateInterpolator) ALight(org.rajawali3d.lights.ALight)

Aggregations

Texture (org.rajawali3d.materials.textures.Texture)7 Material (org.rajawali3d.materials.Material)6 DiffuseMethod (org.rajawali3d.materials.methods.DiffuseMethod)5 ParsingException (org.rajawali3d.loader.ParsingException)3 TextureException (org.rajawali3d.materials.textures.ATexture.TextureException)3 NormalMapTexture (org.rajawali3d.materials.textures.NormalMapTexture)3 Bitmap (android.graphics.Bitmap)2 FileNotFoundException (java.io.FileNotFoundException)2 IOException (java.io.IOException)2 DirectionalLight (org.rajawali3d.lights.DirectionalLight)2 Vector3 (org.rajawali3d.math.vector.Vector3)2 AccelerateDecelerateInterpolator (android.view.animation.AccelerateDecelerateInterpolator)1 BufferedInputStream (java.io.BufferedInputStream)1 ByteArrayInputStream (java.io.ByteArrayInputStream)1 FileInputStream (java.io.FileInputStream)1 InputStream (java.io.InputStream)1 InvocationTargetException (java.lang.reflect.InvocationTargetException)1 HashMap (java.util.HashMap)1 Object3D (org.rajawali3d.Object3D)1 Animation3D (org.rajawali3d.animation.Animation3D)1