Search in sources :

Example 1 with DOFBlurShape

use of org.jwildfire.create.tina.render.dof.DOFBlurShape in project JWildfire by thargor6.

the class AbstractFlameWriter method createFlameAttributes.

protected List<SimpleXMLBuilder.Attribute<?>> createFlameAttributes(Flame pFlame, SimpleXMLBuilder xb) throws Exception {
    List<SimpleXMLBuilder.Attribute<?>> attrList = new ArrayList<SimpleXMLBuilder.Attribute<?>>();
    String fName = pFlame.getName().replaceAll("\"", "");
    if (!fName.equals("")) {
        attrList.add(xb.createAttr("name", fName));
    }
    String bgImagefilename = pFlame.getBGImageFilename().replaceAll("\"", "");
    if (!bgImagefilename.equals("")) {
        attrList.add(xb.createAttr(ATTR_BACKGROUND_IMAGE, bgImagefilename));
    }
    if (pFlame.getLayers().size() == 1) {
        String name = pFlame.getFirstLayer().getName().replaceAll("\"", "");
        if (!name.equals("")) {
            attrList.add(xb.createAttr(ATTR_LAYER_NAME, name));
        }
        String gradientMapFilename = pFlame.getFirstLayer().getGradientMapFilename().replaceAll("\"", "");
        if (!gradientMapFilename.equals("")) {
            attrList.add(xb.createAttr(ATTR_GRADIENT_MAP, gradientMapFilename));
            attrList.add(xb.createAttr(ATTR_GRADIENT_MAP_HOFFSET, pFlame.getFirstLayer().getGradientMapHorizOffset()));
            attrList.add(xb.createAttr(ATTR_GRADIENT_MAP_HSCALE, pFlame.getFirstLayer().getGradientMapHorizScale()));
            attrList.add(xb.createAttr(ATTR_GRADIENT_MAP_VOFFSET, pFlame.getFirstLayer().getGradientMapVertOffset()));
            attrList.add(xb.createAttr(ATTR_GRADIENT_MAP_VSCALE, pFlame.getFirstLayer().getGradientMapVertScale()));
            attrList.add(xb.createAttr(ATTR_GRADIENT_MAP_LCOLOR_ADD, pFlame.getFirstLayer().getGradientMapLocalColorAdd()));
            attrList.add(xb.createAttr(ATTR_GRADIENT_MAP_LCOLOR_SCALE, pFlame.getFirstLayer().getGradientMapLocalColorScale()));
        }
        attrList.add(xb.createAttr(ATTR_SMOOTH_GRADIENT, pFlame.getFirstLayer().isSmoothGradient() ? "1" : "0"));
    }
    attrList.add(xb.createAttr("version", Tools.APP_TITLE + " " + Tools.APP_VERSION));
    attrList.add(xb.createAttr("size", pFlame.getWidth() + " " + pFlame.getHeight()));
    attrList.add(xb.createAttr("center", pFlame.getCentreX() + " " + pFlame.getCentreY()));
    attrList.add(xb.createAttr("scale", pFlame.getPixelsPerUnit()));
    attrList.add(xb.createAttr("rotate", pFlame.getCamRoll()));
    attrList.add(xb.createAttr("filter", pFlame.getSpatialFilterRadius()));
    attrList.add(xb.createAttr(AbstractFlameReader.ATTR_FILTER_TYPE, pFlame.getSpatialFilteringType().toString()));
    attrList.add(xb.createAttr(AbstractFlameReader.ATTR_FILTER_KERNEL, pFlame.getSpatialFilterKernel().toString()));
    attrList.add(xb.createAttr(AbstractFlameReader.ATTR_FILTER_INDICATOR, pFlame.isSpatialFilterIndicator() ? 1 : 0));
    attrList.add(xb.createAttr(AbstractFlameReader.ATTR_FILTER_SHARPNESS, pFlame.getSpatialFilterSharpness()));
    attrList.add(xb.createAttr(AbstractFlameReader.ATTR_FILTER_LOW_DENSITY, pFlame.getSpatialFilterLowDensity()));
    attrList.add(xb.createAttr(AbstractFlameReader.ATTR_SPATIAL_OVERSAMPLE, pFlame.getSpatialOversampling()));
    attrList.add(xb.createAttr(AbstractFlameReader.ATTR_POST_NOISE_FILTER, pFlame.isPostNoiseFilter() ? 1 : 0));
    attrList.add(xb.createAttr(AbstractFlameReader.ATTR_POST_NOISE_FILTER_THRESHOLD, pFlame.getPostNoiseFilterThreshold()));
    attrList.add(xb.createAttr("quality", pFlame.getSampleDensity()));
    attrList.add(xb.createAttr(AbstractFlameReader.ATTR_BACKGROUND_TYPE, pFlame.getBgColorType().toString()));
    if (BGColorType.GRADIENT_2X2.equals(pFlame.getBgColorType()) || BGColorType.GRADIENT_2X2_C.equals(pFlame.getBgColorType())) {
        attrList.add(xb.createAttr(AbstractFlameReader.ATTR_BACKGROUND_UL, (double) pFlame.getBgColorULRed() / 255.0 + " " + (double) pFlame.getBgColorULGreen() / 255.0 + " " + (double) pFlame.getBgColorULBlue() / 255.0));
        attrList.add(xb.createAttr(AbstractFlameReader.ATTR_BACKGROUND_UR, (double) pFlame.getBgColorURRed() / 255.0 + " " + (double) pFlame.getBgColorURGreen() / 255.0 + " " + (double) pFlame.getBgColorURBlue() / 255.0));
        attrList.add(xb.createAttr(AbstractFlameReader.ATTR_BACKGROUND_LL, (double) pFlame.getBgColorLLRed() / 255.0 + " " + (double) pFlame.getBgColorLLGreen() / 255.0 + " " + (double) pFlame.getBgColorLLBlue() / 255.0));
        attrList.add(xb.createAttr(AbstractFlameReader.ATTR_BACKGROUND_LR, (double) pFlame.getBgColorLRRed() / 255.0 + " " + (double) pFlame.getBgColorLRGreen() / 255.0 + " " + (double) pFlame.getBgColorLRBlue() / 255.0));
    }
    if (BGColorType.GRADIENT_2X2_C.equals(pFlame.getBgColorType())) {
        attrList.add(xb.createAttr(AbstractFlameReader.ATTR_BACKGROUND_CC, (double) pFlame.getBgColorCCRed() / 255.0 + " " + (double) pFlame.getBgColorCCGreen() / 255.0 + " " + (double) pFlame.getBgColorCCBlue() / 255.0));
    }
    if (BGColorType.SINGLE_COLOR.equals(pFlame.getBgColorType())) {
        attrList.add(xb.createAttr(AbstractFlameReader.ATTR_BACKGROUND, (double) pFlame.getBgColorRed() / 255.0 + " " + (double) pFlame.getBgColorGreen() / 255.0 + " " + (double) pFlame.getBgColorBlue() / 255.0));
    }
    attrList.add(xb.createAttr("bg_transparency", pFlame.isBGTransparency() ? "1" : "0"));
    attrList.add(xb.createAttr("brightness", pFlame.getBrightness()));
    attrList.add(xb.createAttr(ATTR_SATURATION, pFlame.getSaturation()));
    attrList.add(xb.createAttr("gamma", pFlame.getGamma()));
    attrList.add(xb.createAttr("gamma_threshold", pFlame.getGammaThreshold()));
    attrList.add(xb.createAttr("vibrancy", pFlame.getVibrancy()));
    attrList.add(xb.createAttr("contrast", pFlame.getContrast()));
    attrList.add(xb.createAttr(ATTR_WHITE_LEVEL, pFlame.getWhiteLevel()));
    attrList.add(xb.createAttr("temporal_samples", 1.0));
    attrList.add(xb.createAttr("cam_zoom", pFlame.getCamZoom()));
    attrList.add(xb.createAttr("cam_pitch", (pFlame.getCamPitch() * Math.PI) / 180.0));
    attrList.add(xb.createAttr("cam_yaw", (pFlame.getCamYaw() * Math.PI) / 180.0));
    attrList.add(xb.createAttr("cam_persp", pFlame.getCamPerspective()));
    attrList.add(xb.createAttr("cam_xfocus", pFlame.getFocusX()));
    attrList.add(xb.createAttr("cam_yfocus", pFlame.getFocusY()));
    attrList.add(xb.createAttr("cam_zfocus", pFlame.getFocusZ()));
    if (pFlame.getDimishZ() != 0.0) {
        attrList.add(xb.createAttr("cam_zdimish", pFlame.getDimishZ()));
    }
    attrList.add(xb.createAttr(ATTR_CAM_POS_X, pFlame.getCamPosX()));
    attrList.add(xb.createAttr(ATTR_CAM_POS_Y, pFlame.getCamPosY()));
    attrList.add(xb.createAttr(ATTR_CAM_POS_Z, pFlame.getCamPosZ()));
    attrList.add(xb.createAttr("cam_zpos", pFlame.getCamZ()));
    attrList.add(xb.createAttr("cam_dof", pFlame.getCamDOF()));
    attrList.add(xb.createAttr("cam_dof_area", pFlame.getCamDOFArea()));
    attrList.add(xb.createAttr("cam_dof_exponent", pFlame.getCamDOFExponent()));
    if (pFlame.isNewCamDOF()) {
        attrList.add(xb.createAttr("new_dof", "1"));
    }
    attrList.add(xb.createAttr(AbstractFlameReader.ATTR_LOW_DENSITY_BRIGHTNESS, pFlame.getLowDensityBrightness()));
    attrList.add(xb.createAttr(AbstractFlameReader.ATTR_BALANCING_RED, pFlame.getBalanceRed()));
    attrList.add(xb.createAttr(AbstractFlameReader.ATTR_BALANCING_GREEN, pFlame.getBalanceGreen()));
    attrList.add(xb.createAttr(AbstractFlameReader.ATTR_BALANCING_BLUE, pFlame.getBalanceBlue()));
    attrList.add(xb.createAttr(ATTR_CAM_DOF_SHAPE, pFlame.getCamDOFShape().toString()));
    attrList.add(xb.createAttr(ATTR_CAM_DOF_SCALE, pFlame.getCamDOFScale()));
    attrList.add(xb.createAttr(ATTR_CAM_DOF_ROTATE, pFlame.getCamDOFAngle()));
    attrList.add(xb.createAttr(ATTR_CAM_DOF_FADE, pFlame.getCamDOFFade()));
    DOFBlurShape shape = pFlame.getCamDOFShape().getDOFBlurShape();
    if (shape != null) {
        List<String> paramNames = shape.getParamNames();
        if (paramNames.size() > 0) {
            attrList.add(xb.createAttr(ATTR_CAM_DOF_PARAM1, pFlame.getCamDOFParam1()));
            if (paramNames.size() > 1) {
                attrList.add(xb.createAttr(ATTR_CAM_DOF_PARAM2, pFlame.getCamDOFParam2()));
                if (paramNames.size() > 2) {
                    attrList.add(xb.createAttr(ATTR_CAM_DOF_PARAM3, pFlame.getCamDOFParam3()));
                    if (paramNames.size() > 3) {
                        attrList.add(xb.createAttr(ATTR_CAM_DOF_PARAM4, pFlame.getCamDOFParam4()));
                        if (paramNames.size() > 4) {
                            attrList.add(xb.createAttr(ATTR_CAM_DOF_PARAM5, pFlame.getCamDOFParam5()));
                            if (paramNames.size() > 5) {
                                attrList.add(xb.createAttr(ATTR_CAM_DOF_PARAM6, pFlame.getCamDOFParam6()));
                            }
                        }
                    }
                }
            }
        }
    }
    if (pFlame.isPreserveZ()) {
        attrList.add(xb.createAttr("preserve_z", "1"));
    }
    if (pFlame.getResolutionProfile() != null && pFlame.getResolutionProfile().length() > 0)
        attrList.add(xb.createAttr("resolution_profile", pFlame.getResolutionProfile()));
    if (pFlame.getQualityProfile() != null && pFlame.getQualityProfile().length() > 0)
        attrList.add(xb.createAttr("quality_profile", pFlame.getQualityProfile()));
    attrList.add(xb.createAttr("antialias_amount", pFlame.getAntialiasAmount()));
    attrList.add(xb.createAttr("antialias_radius", pFlame.getAntialiasRadius()));
    if (pFlame.getMotionBlurLength() > 0) {
        attrList.add(xb.createAttr(AbstractFlameReader.ATTR_MOTIONBLUR_LENGTH, pFlame.getMotionBlurLength()));
        attrList.add(xb.createAttr(AbstractFlameReader.ATTR_MOTIONBLUR_TIMESTEP, pFlame.getMotionBlurTimeStep()));
        attrList.add(xb.createAttr(AbstractFlameReader.ATTR_MOTIONBLUR_DECAY, pFlame.getMotionBlurDecay()));
    }
    attrList.add(xb.createAttr(AbstractFlameReader.ATTR_POST_SYMMETRY_TYPE, pFlame.getPostSymmetryType().toString()));
    attrList.add(xb.createAttr(AbstractFlameReader.ATTR_POST_SYMMETRY_ORDER, pFlame.getPostSymmetryOrder()));
    attrList.add(xb.createAttr(AbstractFlameReader.ATTR_POST_SYMMETRY_CENTREX, pFlame.getPostSymmetryCentreX()));
    attrList.add(xb.createAttr(AbstractFlameReader.ATTR_POST_SYMMETRY_CENTREY, pFlame.getPostSymmetryCentreY()));
    attrList.add(xb.createAttr(AbstractFlameReader.ATTR_POST_SYMMETRY_DISTANCE, pFlame.getPostSymmetryDistance()));
    attrList.add(xb.createAttr(AbstractFlameReader.ATTR_POST_SYMMETRY_ROTATION, pFlame.getPostSymmetryRotation()));
    if (pFlame.getStereo3dMode() != Stereo3dMode.NONE) {
        attrList.add(xb.createAttr(AbstractFlameReader.ATTR_STEREO3D_MODE, pFlame.getStereo3dMode().toString()));
        attrList.add(xb.createAttr(AbstractFlameReader.ATTR_STEREO3D_ANGLE, pFlame.getStereo3dAngle()));
        attrList.add(xb.createAttr(AbstractFlameReader.ATTR_STEREO3D_EYE_DIST, pFlame.getStereo3dEyeDist()));
        attrList.add(xb.createAttr(AbstractFlameReader.ATTR_STEREO3D_FOCAL_OFFSET, pFlame.getStereo3dFocalOffset()));
        if (pFlame.getStereo3dMode() == Stereo3dMode.ANAGLYPH) {
            attrList.add(xb.createAttr(AbstractFlameReader.ATTR_STEREO3D_LEFT_EYE_COLOR, pFlame.getStereo3dLeftEyeColor().toString()));
            attrList.add(xb.createAttr(AbstractFlameReader.ATTR_STEREO3D_RIGHT_EYE_COLOR, pFlame.getStereo3dRightEyeColor().toString()));
        } else if (pFlame.getStereo3dMode() == Stereo3dMode.INTERPOLATED_IMAGES) {
            attrList.add(xb.createAttr(AbstractFlameReader.ATTR_STEREO3D_INTERPOLATED_IMAGE_COUNT, pFlame.getStereo3dInterpolatedImageCount()));
        }
        attrList.add(xb.createAttr(AbstractFlameReader.ATTR_STEREO3D_PREVIEW, pFlame.getStereo3dPreview().toString()));
        attrList.add(xb.createAttr(AbstractFlameReader.ATTR_STEREO3D_SWAP_SIDES, pFlame.isStereo3dSwapSides() ? "1" : "0"));
    }
    attrList.add(xb.createAttr(AbstractFlameReader.ATTR_FRAME, pFlame.getFrame()));
    attrList.add(xb.createAttr(AbstractFlameReader.ATTR_FRAME_COUNT, pFlame.getFrameCount()));
    attrList.add(xb.createAttr(AbstractFlameReader.ATTR_FPS, pFlame.getFps()));
    attrList.add(xb.createAttr(AbstractFlameReader.ATTR_POSTBLUR_RADIUS, pFlame.getPostBlurRadius()));
    attrList.add(xb.createAttr(AbstractFlameReader.ATTR_POSTBLUR_FADE, pFlame.getPostBlurFade()));
    attrList.add(xb.createAttr(AbstractFlameReader.ATTR_POSTBLUR_FALLOFF, pFlame.getPostBlurFallOff()));
    attrList.add(xb.createAttr(AbstractFlameReader.ATTR_ZBUFFER_SCALE, pFlame.getZBufferScale()));
    if (pFlame.getSolidRenderSettings().isSolidRenderingEnabled()) {
        attrList.add(xb.createAttr(AbstractFlameReader.ATTR_SLD_RENDER_ENABLED, pFlame.getSolidRenderSettings().isSolidRenderingEnabled()));
        attrList.add(xb.createAttr(AbstractFlameReader.ATTR_SLD_RENDER_AO_ENABLED, pFlame.getSolidRenderSettings().isAoEnabled()));
        attrList.add(xb.createAttr(AbstractFlameReader.ATTR_SLD_RENDER_AO_INTENSITY, pFlame.getSolidRenderSettings().getAoIntensity()));
        attrList.add(xb.createAttr(AbstractFlameReader.ATTR_SLD_RENDER_AO_SEARCH_RADIUS, pFlame.getSolidRenderSettings().getAoSearchRadius()));
        attrList.add(xb.createAttr(AbstractFlameReader.ATTR_SLD_RENDER_AO_BLUR_RADIUS, pFlame.getSolidRenderSettings().getAoBlurRadius()));
        attrList.add(xb.createAttr(AbstractFlameReader.ATTR_SLD_RENDER_AO_RADIUS_SAMPLES, pFlame.getSolidRenderSettings().getAoRadiusSamples()));
        attrList.add(xb.createAttr(AbstractFlameReader.ATTR_SLD_RENDER_AO_AZIMUTH_SAMPLES, pFlame.getSolidRenderSettings().getAoAzimuthSamples()));
        attrList.add(xb.createAttr(AbstractFlameReader.ATTR_SLD_RENDER_AO_FALLOFF, pFlame.getSolidRenderSettings().getAoFalloff()));
        attrList.add(xb.createAttr(AbstractFlameReader.ATTR_SLD_RENDER_AO_AFFECT_DIFFUSE, pFlame.getSolidRenderSettings().getAoAffectDiffuse()));
        attrList.add(xb.createAttr(AbstractFlameReader.ATTR_SLD_RENDER_SHADOW_TYPE, pFlame.getSolidRenderSettings().getShadowType().toString()));
        attrList.add(xb.createAttr(AbstractFlameReader.ATTR_SLD_RENDER_SHADOW_SMOOTH_RADIUS, pFlame.getSolidRenderSettings().getShadowSmoothRadius()));
        attrList.add(xb.createAttr(AbstractFlameReader.ATTR_SLD_RENDER_SHADOWMAP_SIZE, pFlame.getSolidRenderSettings().getShadowmapSize()));
        attrList.add(xb.createAttr(AbstractFlameReader.ATTR_SLD_RENDER_SHADOWMAP_BIAS, pFlame.getSolidRenderSettings().getShadowmapBias()));
        attrList.add(xb.createAttr(AbstractFlameReader.ATTR_POST_BOKEH_FILTER_KERNEL, pFlame.getSolidRenderSettings().getPostBokehFilterKernel().toString()));
        attrList.add(xb.createAttr(AbstractFlameReader.ATTR_POST_BOKEH_INTENSITY, pFlame.getSolidRenderSettings().getPostBokehIntensity()));
        attrList.add(xb.createAttr(AbstractFlameReader.ATTR_POST_BOKEH_BRIGHTNESS, pFlame.getSolidRenderSettings().getPostBokehBrightness()));
        attrList.add(xb.createAttr(AbstractFlameReader.ATTR_POST_BOKEH_SIZE, pFlame.getSolidRenderSettings().getPostBokehSize()));
        attrList.add(xb.createAttr(AbstractFlameReader.ATTR_POST_BOKEH_ACTIVATION, pFlame.getSolidRenderSettings().getPostBokehActivation()));
        attrList.add(xb.createAttr(AbstractFlameReader.ATTR_SLD_RENDER_MATERIAL_COUNT, pFlame.getSolidRenderSettings().getMaterials().size()));
        for (int i = 0; i < pFlame.getSolidRenderSettings().getMaterials().size(); i++) {
            MaterialSettings material = pFlame.getSolidRenderSettings().getMaterials().get(i);
            attrList.add(xb.createAttr(AbstractFlameReader.ATTR_SLD_RENDER_MATERIAL_DIFFUSE + i, material.getDiffuse()));
            attrList.add(xb.createAttr(AbstractFlameReader.ATTR_SLD_RENDER_MATERIAL_AMBIENT + i, material.getAmbient()));
            attrList.add(xb.createAttr(AbstractFlameReader.ATTR_SLD_RENDER_MATERIAL_PHONG + i, material.getPhong()));
            attrList.add(xb.createAttr(AbstractFlameReader.ATTR_SLD_RENDER_MATERIAL_PHONG_SIZE + i, material.getPhongSize()));
            attrList.add(xb.createAttr(AbstractFlameReader.ATTR_SLD_RENDER_MATERIAL_PHONG_RED + i, material.getPhongRed()));
            attrList.add(xb.createAttr(AbstractFlameReader.ATTR_SLD_RENDER_MATERIAL_PHONG_GREEN + i, material.getPhongGreen()));
            attrList.add(xb.createAttr(AbstractFlameReader.ATTR_SLD_RENDER_MATERIAL_PHONG_BLUE + i, material.getPhongBlue()));
            attrList.add(xb.createAttr(AbstractFlameReader.ATTR_SLD_RENDER_MATERIAL_REFL_MAP_INTENSITY + i, material.getReflMapIntensity()));
            attrList.add(xb.createAttr(AbstractFlameReader.ATTR_SLD_RENDER_MATERIAL_REFL_MAP_FILENAME + i, material.getReflMapFilename() != null ? material.getReflMapFilename() : ""));
            attrList.add(xb.createAttr(AbstractFlameReader.ATTR_SLD_RENDER_MATERIAL_REFL_MAPPING + i, material.getReflectionMapping().toString()));
            if (material.getLightDiffFunc() instanceof LightDiffFuncPreset)
                attrList.add(xb.createAttr(AbstractFlameReader.ATTR_SLD_RENDER_MATERIAL_LIGHT_DIFF_FUNC + i, ((LightDiffFuncPreset) material.getLightDiffFunc()).toString()));
        }
        attrList.add(xb.createAttr(AbstractFlameReader.ATTR_SLD_RENDER_LIGHT_COUNT, pFlame.getSolidRenderSettings().getLights().size()));
        for (int i = 0; i < pFlame.getSolidRenderSettings().getLights().size(); i++) {
            DistantLight light = pFlame.getSolidRenderSettings().getLights().get(i);
            attrList.add(xb.createAttr(AbstractFlameReader.ATTR_SLD_RENDER_LIGHT_ALTITUDE + i, light.getAltitude()));
            writeMotionCurve(xb, attrList, AbstractFlameReader.ATTR_SLD_RENDER_LIGHT_ALTITUDE + i, light.getAltitudeCurve());
            attrList.add(xb.createAttr(AbstractFlameReader.ATTR_SLD_RENDER_LIGHT_AZIMUTH + i, light.getAzimuth()));
            writeMotionCurve(xb, attrList, AbstractFlameReader.ATTR_SLD_RENDER_LIGHT_AZIMUTH + i, light.getAzimuthCurve());
            attrList.add(xb.createAttr(AbstractFlameReader.ATTR_SLD_RENDER_LIGHT_INTENSITY + i, light.getIntensity()));
            attrList.add(xb.createAttr(AbstractFlameReader.ATTR_SLD_RENDER_LIGHT_RED + i, light.getRed()));
            attrList.add(xb.createAttr(AbstractFlameReader.ATTR_SLD_RENDER_LIGHT_GREEN + i, light.getGreen()));
            attrList.add(xb.createAttr(AbstractFlameReader.ATTR_SLD_RENDER_LIGHT_BLUE + i, light.getBlue()));
            attrList.add(xb.createAttr(AbstractFlameReader.ATTR_SLD_RENDER_LIGHT_SHADOWS + i, light.isCastShadows()));
            attrList.add(xb.createAttr(AbstractFlameReader.ATTR_SLD_RENDER_LIGHT_SHADOW_INTENSITY + i, light.getShadowIntensity()));
        }
    }
    writeMotionCurves(pFlame, xb, attrList, null, flameAttrMotionCurveBlackList);
    attrList.add(xb.createAttr(AbstractFlameReader.ATTR_CHANNEL_MIXER_MODE, pFlame.getChannelMixerMode().toString()));
    switch(pFlame.getChannelMixerMode()) {
        case BRIGHTNESS:
            writeMotionCurve(xb, attrList, AbstractFlameReader.ATTR_CHANNEL_MIXER_RR_CURVE, pFlame.getMixerRRCurve());
            break;
        case RGB:
            writeMotionCurve(xb, attrList, AbstractFlameReader.ATTR_CHANNEL_MIXER_RR_CURVE, pFlame.getMixerRRCurve());
            writeMotionCurve(xb, attrList, AbstractFlameReader.ATTR_CHANNEL_MIXER_GG_CURVE, pFlame.getMixerGGCurve());
            writeMotionCurve(xb, attrList, AbstractFlameReader.ATTR_CHANNEL_MIXER_BB_CURVE, pFlame.getMixerBBCurve());
            break;
        case FULL:
            writeMotionCurve(xb, attrList, AbstractFlameReader.ATTR_CHANNEL_MIXER_RR_CURVE, pFlame.getMixerRRCurve());
            writeMotionCurve(xb, attrList, AbstractFlameReader.ATTR_CHANNEL_MIXER_RG_CURVE, pFlame.getMixerRGCurve());
            writeMotionCurve(xb, attrList, AbstractFlameReader.ATTR_CHANNEL_MIXER_RB_CURVE, pFlame.getMixerRBCurve());
            writeMotionCurve(xb, attrList, AbstractFlameReader.ATTR_CHANNEL_MIXER_GR_CURVE, pFlame.getMixerGRCurve());
            writeMotionCurve(xb, attrList, AbstractFlameReader.ATTR_CHANNEL_MIXER_GG_CURVE, pFlame.getMixerGGCurve());
            writeMotionCurve(xb, attrList, AbstractFlameReader.ATTR_CHANNEL_MIXER_GB_CURVE, pFlame.getMixerGBCurve());
            writeMotionCurve(xb, attrList, AbstractFlameReader.ATTR_CHANNEL_MIXER_BR_CURVE, pFlame.getMixerBRCurve());
            writeMotionCurve(xb, attrList, AbstractFlameReader.ATTR_CHANNEL_MIXER_BG_CURVE, pFlame.getMixerBGCurve());
            writeMotionCurve(xb, attrList, AbstractFlameReader.ATTR_CHANNEL_MIXER_BB_CURVE, pFlame.getMixerBBCurve());
            break;
        default:
            break;
    }
    return attrList;
}
Also used : DOFBlurShape(org.jwildfire.create.tina.render.dof.DOFBlurShape) LightDiffFuncPreset(org.jwildfire.create.tina.base.solidrender.LightDiffFuncPreset) MotionCurveAttribute(org.jwildfire.create.tina.animate.AnimationService.MotionCurveAttribute) MaterialSettings(org.jwildfire.create.tina.base.solidrender.MaterialSettings) ArrayList(java.util.ArrayList) DistantLight(org.jwildfire.create.tina.base.solidrender.DistantLight)

Example 2 with DOFBlurShape

use of org.jwildfire.create.tina.render.dof.DOFBlurShape in project JWildfire by thargor6.

the class AbstractFlameReader method parseFlameAttributes.

protected XMLAttributes parseFlameAttributes(Flame pFlame, String pXML) {
    XMLAttributes atts = Tools.parseAttributes(pXML);
    String hs;
    if ((hs = atts.get(ATTR_NAME)) != null) {
        pFlame.setName(hs);
    }
    if ((hs = atts.get(ATTR_BACKGROUND_IMAGE)) != null) {
        pFlame.setBGImageFilename(hs);
    }
    if ((hs = atts.get(ATTR_LAYER_NAME)) != null && pFlame.getLayers().size() == 1) {
        pFlame.getFirstLayer().setName(hs);
    }
    if ((hs = atts.get(ATTR_GRADIENT_MAP)) != null && pFlame.getLayers().size() == 1) {
        pFlame.getFirstLayer().setGradientMapFilename(hs);
    }
    if ((hs = atts.get(ATTR_GRADIENT_MAP_HOFFSET)) != null && pFlame.getLayers().size() == 1) {
        pFlame.getFirstLayer().setGradientMapHorizOffset(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_GRADIENT_MAP_HSCALE)) != null && pFlame.getLayers().size() == 1) {
        pFlame.getFirstLayer().setGradientMapHorizScale(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_GRADIENT_MAP_VOFFSET)) != null && pFlame.getLayers().size() == 1) {
        pFlame.getFirstLayer().setGradientMapVertOffset(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_GRADIENT_MAP_VSCALE)) != null && pFlame.getLayers().size() == 1) {
        pFlame.getFirstLayer().setGradientMapVertScale(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_GRADIENT_MAP_LCOLOR_ADD)) != null && pFlame.getLayers().size() == 1) {
        pFlame.getFirstLayer().setGradientMapLocalColorAdd(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_GRADIENT_MAP_LCOLOR_SCALE)) != null && pFlame.getLayers().size() == 1) {
        pFlame.getFirstLayer().setGradientMapLocalColorScale(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_SMOOTH_GRADIENT)) != null && pFlame.getLayers().size() == 1) {
        pFlame.getFirstLayer().setSmoothGradient("1".equals(hs));
    }
    if ((hs = atts.get(ATTR_SIZE)) != null) {
        String[] s = hs.split(" ");
        pFlame.setWidth(Integer.parseInt(s[0]));
        pFlame.setHeight(Integer.parseInt(s[1]));
    }
    if ((hs = atts.get(ATTR_CENTER)) != null) {
        String[] s = hs.split(" ");
        pFlame.setCentreX(Double.parseDouble(s[0]));
        pFlame.setCentreY(Double.parseDouble(s[1]));
    }
    if ((hs = atts.get(ATTR_SCALE)) != null) {
        pFlame.setPixelsPerUnit(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_ROTATE)) != null) {
        // pFlame.setCamRoll(-Double.parseDouble(hs) * 180.0 / Math.PI);
        pFlame.setCamRoll(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_FILTER)) != null) {
        pFlame.setSpatialFilterRadius(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_FILTER_SHARPNESS)) != null) {
        pFlame.setSpatialFilterSharpness(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_FILTER_LOW_DENSITY)) != null) {
        pFlame.setSpatialFilterLowDensity(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_FILTER_TYPE)) != null) {
        try {
            FilteringType filteringType = FilteringType.valueOf(hs);
            pFlame.setSpatialFilteringType(filteringType);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
    if ((hs = atts.get(ATTR_FILTER_KERNEL)) != null) {
        try {
            FilterKernelType kernel = FilterKernelType.valueOf(hs);
            pFlame.setSpatialFilterKernel(kernel);
            if (atts.get(ATTR_FILTER_TYPE) == null) {
                if (FilterKernelType.getAdapativeFilters().contains(kernel)) {
                    pFlame.setSpatialFilteringType(FilteringType.ADAPTIVE);
                } else if (FilterKernelType.getSharpeningFilters().contains(kernel)) {
                    pFlame.setSpatialFilteringType(FilteringType.GLOBAL_SHARPENING);
                } else if (FilterKernelType.getSmoothingFilters().contains(kernel)) {
                    pFlame.setSpatialFilteringType(FilteringType.GLOBAL_SMOOTHING);
                } else {
                    pFlame.setSpatialFilteringType(FilteringType.GLOBAL_SMOOTHING);
                    pFlame.setSpatialFilterKernel(FilterKernelType.SINEPOW10);
                }
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
    if ((hs = atts.get(ATTR_FILTER_INDICATOR)) != null) {
        pFlame.setSpatialFilterIndicator(Integer.parseInt(hs) == 1);
    }
    if ((hs = atts.get(ATTR_SPATIAL_OVERSAMPLE)) != null) {
        pFlame.setSpatialOversampling(Integer.parseInt(hs));
    }
    if ((hs = atts.get(ATTR_POST_NOISE_FILTER)) != null) {
        pFlame.setPostNoiseFilter(Integer.parseInt(hs) == 1);
    }
    if ((hs = atts.get(ATTR_POST_NOISE_FILTER_THRESHOLD)) != null) {
        pFlame.setPostNoiseFilterThreshold(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_QUALITY)) != null) {
        pFlame.setSampleDensity(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_BACKGROUND_TYPE)) != null) {
        try {
            pFlame.setBgColorType(BGColorType.valueOf(hs));
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
    if ((hs = atts.get(ATTR_BACKGROUND)) != null) {
        String[] s = hs.split(" ");
        pFlame.setBgColorRed(Tools.roundColor(255.0 * Double.parseDouble(s[0])));
        pFlame.setBgColorGreen(Tools.roundColor(255.0 * Double.parseDouble(s[1])));
        pFlame.setBgColorBlue(Tools.roundColor(255.0 * Double.parseDouble(s[2])));
        // old flames without a bg color type
        if (atts.get(ATTR_BACKGROUND_TYPE) == null) {
            pFlame.setBgColorType(BGColorType.SINGLE_COLOR);
        }
    }
    if ((hs = atts.get(ATTR_BACKGROUND_UL)) != null) {
        String[] s = hs.split(" ");
        pFlame.setBgColorULRed(Tools.roundColor(255.0 * Double.parseDouble(s[0])));
        pFlame.setBgColorULGreen(Tools.roundColor(255.0 * Double.parseDouble(s[1])));
        pFlame.setBgColorULBlue(Tools.roundColor(255.0 * Double.parseDouble(s[2])));
    }
    if ((hs = atts.get(ATTR_BACKGROUND_UR)) != null) {
        String[] s = hs.split(" ");
        pFlame.setBgColorURRed(Tools.roundColor(255.0 * Double.parseDouble(s[0])));
        pFlame.setBgColorURGreen(Tools.roundColor(255.0 * Double.parseDouble(s[1])));
        pFlame.setBgColorURBlue(Tools.roundColor(255.0 * Double.parseDouble(s[2])));
    }
    if ((hs = atts.get(ATTR_BACKGROUND_LL)) != null) {
        String[] s = hs.split(" ");
        pFlame.setBgColorLLRed(Tools.roundColor(255.0 * Double.parseDouble(s[0])));
        pFlame.setBgColorLLGreen(Tools.roundColor(255.0 * Double.parseDouble(s[1])));
        pFlame.setBgColorLLBlue(Tools.roundColor(255.0 * Double.parseDouble(s[2])));
    }
    if ((hs = atts.get(ATTR_BACKGROUND_LR)) != null) {
        String[] s = hs.split(" ");
        pFlame.setBgColorLRRed(Tools.roundColor(255.0 * Double.parseDouble(s[0])));
        pFlame.setBgColorLRGreen(Tools.roundColor(255.0 * Double.parseDouble(s[1])));
        pFlame.setBgColorLRBlue(Tools.roundColor(255.0 * Double.parseDouble(s[2])));
    }
    if ((hs = atts.get(ATTR_BACKGROUND_CC)) != null) {
        String[] s = hs.split(" ");
        pFlame.setBgColorCCRed(Tools.roundColor(255.0 * Double.parseDouble(s[0])));
        pFlame.setBgColorCCGreen(Tools.roundColor(255.0 * Double.parseDouble(s[1])));
        pFlame.setBgColorCCBlue(Tools.roundColor(255.0 * Double.parseDouble(s[2])));
    }
    if ((hs = atts.get(ATTR_BRIGHTNESS)) != null) {
        pFlame.setBrightness(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_SATURATION)) != null) {
        pFlame.setSaturation(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_BG_TRANSPARENCY)) != null) {
        pFlame.setBGTransparency(Integer.parseInt(hs) == 1);
    } else {
        pFlame.setBGTransparency(prefs.isTinaDefaultBGTransparency());
    }
    if ((hs = atts.get(ATTR_GAMMA)) != null) {
        pFlame.setGamma(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_GAMMA_THRESHOLD)) != null) {
        pFlame.setGammaThreshold(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_VIBRANCY)) != null) {
        pFlame.setVibrancy(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_LOW_DENSITY_BRIGHTNESS)) != null) {
        pFlame.setLowDensityBrightness(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_BALANCING_RED)) != null) {
        pFlame.setBalanceRed(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_BALANCING_GREEN)) != null) {
        pFlame.setBalanceGreen(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_BALANCING_BLUE)) != null) {
        pFlame.setBalanceBlue(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_CONTRAST)) != null) {
        pFlame.setContrast(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_WHITE_LEVEL)) != null) {
        pFlame.setWhiteLevel(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_CAM_PERSP)) != null) {
        pFlame.setCamPerspective(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_CAM_PERSPECTIVE)) != null) {
        pFlame.setCamPerspective(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_CAM_ZPOS)) != null) {
        pFlame.setCamZ(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_CAM_POS_X)) != null) {
        pFlame.setCamPosX(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_CAM_POS_Y)) != null) {
        pFlame.setCamPosY(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_CAM_POS_Z)) != null) {
        pFlame.setCamPosZ(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_CAM_XFOCUS)) != null) {
        pFlame.setFocusX(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_CAM_YFOCUS)) != null) {
        pFlame.setFocusY(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_CAM_ZFOCUS)) != null) {
        pFlame.setFocusZ(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_CAM_ZDIMISH)) != null) {
        pFlame.setDimishZ(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_CAM_DOF)) != null) {
        pFlame.setCamDOF(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_CAM_DOF_SHAPE)) != null) {
        try {
            pFlame.setCamDOFShape(DOFBlurShapeType.valueOf(hs));
        } catch (Exception ex) {
            pFlame.setCamDOFShape(DOFBlurShapeType.BUBBLE);
            ex.printStackTrace();
        }
    }
    if ((hs = atts.get(ATTR_CAM_DOF_SCALE)) != null) {
        pFlame.setCamDOFScale(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_CAM_DOF_ROTATE)) != null) {
        pFlame.setCamDOFAngle(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_CAM_DOF_FADE)) != null) {
        pFlame.setCamDOFFade(Double.parseDouble(hs));
    }
    {
        DOFBlurShape shape = pFlame.getCamDOFShape().getDOFBlurShape();
        List<String> paramNames = shape.getParamNames();
        if (paramNames.size() > 0 && (hs = atts.get(ATTR_CAM_DOF_PARAM1)) != null) {
            pFlame.setCamDOFParam1(Double.parseDouble(hs));
        }
        if (paramNames.size() > 1 && (hs = atts.get(ATTR_CAM_DOF_PARAM2)) != null) {
            pFlame.setCamDOFParam2(Double.parseDouble(hs));
        }
        if (paramNames.size() > 2 && (hs = atts.get(ATTR_CAM_DOF_PARAM3)) != null) {
            pFlame.setCamDOFParam3(Double.parseDouble(hs));
        }
        if (paramNames.size() > 3 && (hs = atts.get(ATTR_CAM_DOF_PARAM4)) != null) {
            pFlame.setCamDOFParam4(Double.parseDouble(hs));
        }
        if (paramNames.size() > 4 && (hs = atts.get(ATTR_CAM_DOF_PARAM5)) != null) {
            pFlame.setCamDOFParam5(Double.parseDouble(hs));
        }
        if (paramNames.size() > 5 && (hs = atts.get(ATTR_CAM_DOF_PARAM6)) != null) {
            pFlame.setCamDOFParam6(Double.parseDouble(hs));
        }
    }
    if ((hs = atts.get(ATTR_CAM_DOF_AREA)) != null) {
        pFlame.setCamDOFArea(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_CAM_DOF_EXPONENT)) != null) {
        pFlame.setCamDOFExponent(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_CAM_PITCH)) != null) {
        pFlame.setCamPitch(Double.parseDouble(hs) * 180.0 / Math.PI);
    }
    if ((hs = atts.get(ATTR_CAM_YAW)) != null) {
        pFlame.setCamYaw(Double.parseDouble(hs) * 180.0 / Math.PI);
    }
    if ((hs = atts.get(ATTR_CAM_ZOOM)) != null) {
        pFlame.setCamZoom(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_NEW_DOF)) != null) {
        pFlame.setNewCamDOF("1".equals(hs));
    }
    // preserve-z
    if ((hs = atts.get(ATTR_PRESERVE_Z)) != null) {
        pFlame.setPreserveZ("1".equals(hs));
    }
    // profiles
    if ((hs = atts.get(ATTR_RESOLUTION_PROFILE)) != null) {
        pFlame.setResolutionProfile(hs);
    }
    if ((hs = atts.get(ATTR_QUALITY_PROFILE)) != null) {
        pFlame.setQualityProfile(hs);
    }
    if ((hs = atts.get(ATTR_NEW_LINEAR)) != null) {
        pFlame.setPreserveZ(hs.length() > 0 && Integer.parseInt(hs) == 1);
    }
    if ((hs = atts.get(ATTR_ANTIALIAS_AMOUNT)) != null) {
        pFlame.setAntialiasAmount(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_ANTIALIAS_RADIUS)) != null) {
        pFlame.setAntialiasRadius(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_MOTIONBLUR_LENGTH)) != null) {
        int blurLen = Integer.parseInt(hs);
        pFlame.setMotionBlurLength(blurLen);
    }
    if ((hs = atts.get(ATTR_MOTIONBLUR_TIMESTEP)) != null) {
        double timestep = Double.parseDouble(hs);
        pFlame.setMotionBlurTimeStep(timestep);
    }
    if ((hs = atts.get(ATTR_MOTIONBLUR_DECAY)) != null) {
        pFlame.setMotionBlurDecay(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_POST_SYMMETRY_TYPE)) != null) {
        try {
            pFlame.setPostSymmetryType(PostSymmetryType.valueOf(hs));
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
    if ((hs = atts.get(ATTR_POST_SYMMETRY_ORDER)) != null) {
        pFlame.setPostSymmetryOrder(Integer.parseInt(hs));
    }
    if ((hs = atts.get(ATTR_POST_SYMMETRY_CENTREX)) != null) {
        pFlame.setPostSymmetryCentreX(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_POST_SYMMETRY_CENTREY)) != null) {
        pFlame.setPostSymmetryCentreY(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_POST_SYMMETRY_DISTANCE)) != null) {
        pFlame.setPostSymmetryDistance(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_POST_SYMMETRY_ROTATION)) != null) {
        pFlame.setPostSymmetryRotation(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_STEREO3D_MODE)) != null) {
        try {
            pFlame.setStereo3dMode(Stereo3dMode.valueOf(hs));
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
    if ((hs = atts.get(ATTR_STEREO3D_ANGLE)) != null) {
        pFlame.setStereo3dAngle(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_STEREO3D_EYE_DIST)) != null) {
        pFlame.setStereo3dEyeDist(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_STEREO3D_FOCAL_OFFSET)) != null) {
        pFlame.setStereo3dFocalOffset(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_STEREO3D_LEFT_EYE_COLOR)) != null) {
        try {
            pFlame.setStereo3dLeftEyeColor(Stereo3dColor.valueOf(hs));
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
    if ((hs = atts.get(ATTR_STEREO3D_RIGHT_EYE_COLOR)) != null) {
        try {
            pFlame.setStereo3dRightEyeColor(Stereo3dColor.valueOf(hs));
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
    if ((hs = atts.get(ATTR_STEREO3D_INTERPOLATED_IMAGE_COUNT)) != null) {
        pFlame.setStereo3dInterpolatedImageCount(Integer.parseInt(hs));
    }
    if ((hs = atts.get(ATTR_STEREO3D_PREVIEW)) != null) {
        try {
            pFlame.setStereo3dPreview(Stereo3dPreview.valueOf(hs));
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
    if ((hs = atts.get(ATTR_STEREO3D_SWAP_SIDES)) != null) {
        pFlame.setStereo3dSwapSides(Integer.parseInt(hs) == 1);
    }
    if ((hs = atts.get(ATTR_FRAME)) != null) {
        pFlame.setFrame(Integer.parseInt(hs));
    }
    if ((hs = atts.get(ATTR_FRAME_COUNT)) != null) {
        pFlame.setFrameCount(Integer.parseInt(hs));
    }
    if ((hs = atts.get(ATTR_FPS)) != null) {
        int fps = Integer.parseInt(hs);
        if (fps >= 1)
            pFlame.setFps(fps);
    }
    if ((hs = atts.get(ATTR_POSTBLUR_RADIUS)) != null) {
        pFlame.setPostBlurRadius(Integer.parseInt(hs));
    }
    if ((hs = atts.get(ATTR_POSTBLUR_FADE)) != null) {
        pFlame.setPostBlurFade(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_POSTBLUR_FALLOFF)) != null) {
        pFlame.setPostBlurFallOff(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_ZBUFFER_SCALE)) != null) {
        pFlame.setZBufferScale(Double.parseDouble(hs));
    }
    if ((hs = atts.get(ATTR_SLD_RENDER_ENABLED)) != null) {
        pFlame.getSolidRenderSettings().setSolidRenderingEnabled(Integer.parseInt(hs) == 1);
    } else {
        pFlame.getSolidRenderSettings().setSolidRenderingEnabled(false);
    }
    if (pFlame.getSolidRenderSettings().isSolidRenderingEnabled()) {
        if ((hs = atts.get(ATTR_SLD_RENDER_AO_ENABLED)) != null) {
            pFlame.getSolidRenderSettings().setAoEnabled(Integer.parseInt(hs) == 1);
        }
        if ((hs = atts.get(ATTR_SLD_RENDER_AO_INTENSITY)) != null) {
            pFlame.getSolidRenderSettings().setAoIntensity(Double.parseDouble(hs));
        }
        if ((hs = atts.get(ATTR_SLD_RENDER_AO_SEARCH_RADIUS)) != null) {
            pFlame.getSolidRenderSettings().setAoSearchRadius(Double.parseDouble(hs));
        }
        if ((hs = atts.get(ATTR_SLD_RENDER_AO_BLUR_RADIUS)) != null) {
            pFlame.getSolidRenderSettings().setAoBlurRadius(Double.parseDouble(hs));
        }
        if ((hs = atts.get(ATTR_SLD_RENDER_AO_RADIUS_SAMPLES)) != null) {
            pFlame.getSolidRenderSettings().setAoRadiusSamples(Integer.parseInt(hs));
        }
        if ((hs = atts.get(ATTR_SLD_RENDER_AO_AZIMUTH_SAMPLES)) != null) {
            pFlame.getSolidRenderSettings().setAoAzimuthSamples(Integer.parseInt(hs));
        }
        if ((hs = atts.get(ATTR_SLD_RENDER_AO_FALLOFF)) != null) {
            pFlame.getSolidRenderSettings().setAoFalloff(Double.parseDouble(hs));
        }
        if ((hs = atts.get(ATTR_SLD_RENDER_AO_AFFECT_DIFFUSE)) != null) {
            pFlame.getSolidRenderSettings().setAoAffectDiffuse(Double.parseDouble(hs));
        }
        if ((hs = atts.get(ATTR_SLD_RENDER_SHADOW_TYPE)) != null) {
            try {
                pFlame.getSolidRenderSettings().setShadowType(ShadowType.valueOf(hs));
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
        if ((hs = atts.get(ATTR_SLD_RENDER_SHADOW_SMOOTH_RADIUS)) != null) {
            pFlame.getSolidRenderSettings().setShadowSmoothRadius(Double.parseDouble(hs));
        }
        if ((hs = atts.get(ATTR_SLD_RENDER_SHADOWMAP_SIZE)) != null) {
            pFlame.getSolidRenderSettings().setShadowmapSize(Integer.parseInt(hs));
        }
        if ((hs = atts.get(ATTR_SLD_RENDER_SHADOWMAP_BIAS)) != null) {
            pFlame.getSolidRenderSettings().setShadowmapBias(Double.parseDouble(hs));
        }
        if ((hs = atts.get(ATTR_POST_BOKEH_FILTER_KERNEL)) != null) {
            try {
                pFlame.getSolidRenderSettings().setPostBokehFilterKernel(FilterKernelType.valueOf(hs));
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
        if ((hs = atts.get(ATTR_POST_BOKEH_INTENSITY)) != null) {
            pFlame.getSolidRenderSettings().setPostBokehIntensity(Double.parseDouble(hs));
        }
        if ((hs = atts.get(ATTR_POST_BOKEH_BRIGHTNESS)) != null) {
            pFlame.getSolidRenderSettings().setPostBokehBrightness(Double.parseDouble(hs));
        }
        if ((hs = atts.get(ATTR_POST_BOKEH_SIZE)) != null) {
            pFlame.getSolidRenderSettings().setPostBokehSize(Double.parseDouble(hs));
        }
        if ((hs = atts.get(ATTR_POST_BOKEH_ACTIVATION)) != null) {
            pFlame.getSolidRenderSettings().setPostBokehActivation(Double.parseDouble(hs));
        }
        if ((hs = atts.get(ATTR_SLD_RENDER_MATERIAL_COUNT)) != null) {
            int materialCount = Integer.parseInt(hs);
            pFlame.getSolidRenderSettings().getMaterials().clear();
            for (int i = 0; i < materialCount; i++) {
                MaterialSettings material = new MaterialSettings();
                pFlame.getSolidRenderSettings().getMaterials().add(material);
                if ((hs = atts.get(ATTR_SLD_RENDER_MATERIAL_DIFFUSE + i)) != null) {
                    material.setDiffuse(Double.parseDouble(hs));
                }
                if ((hs = atts.get(ATTR_SLD_RENDER_MATERIAL_AMBIENT + i)) != null) {
                    material.setAmbient(Double.parseDouble(hs));
                }
                if ((hs = atts.get(ATTR_SLD_RENDER_MATERIAL_PHONG + i)) != null) {
                    material.setPhong(Double.parseDouble(hs));
                }
                if ((hs = atts.get(ATTR_SLD_RENDER_MATERIAL_PHONG_SIZE + i)) != null) {
                    material.setPhongSize(Double.parseDouble(hs));
                }
                if ((hs = atts.get(ATTR_SLD_RENDER_MATERIAL_PHONG_RED + i)) != null) {
                    material.setPhongRed(Double.parseDouble(hs));
                }
                if ((hs = atts.get(ATTR_SLD_RENDER_MATERIAL_PHONG_GREEN + i)) != null) {
                    material.setPhongGreen(Double.parseDouble(hs));
                }
                if ((hs = atts.get(ATTR_SLD_RENDER_MATERIAL_PHONG_BLUE + i)) != null) {
                    material.setPhongBlue(Double.parseDouble(hs));
                }
                if ((hs = atts.get(ATTR_SLD_RENDER_MATERIAL_LIGHT_DIFF_FUNC + i)) != null) {
                    try {
                        material.setLightDiffFunc(LightDiffFuncPreset.valueOf(hs));
                    } catch (Exception ex) {
                        ex.printStackTrace();
                    }
                }
                if ((hs = atts.get(ATTR_SLD_RENDER_MATERIAL_REFL_MAP_INTENSITY + i)) != null) {
                    material.setReflMapIntensity(Double.parseDouble(hs));
                }
                if ((hs = atts.get(ATTR_SLD_RENDER_MATERIAL_REFL_MAP_FILENAME + i)) != null) {
                    material.setReflMapFilename(hs);
                }
                if ((hs = atts.get(ATTR_SLD_RENDER_MATERIAL_REFL_MAPPING + i)) != null) {
                    try {
                        material.setReflectionMapping(ReflectionMapping.valueOf(hs));
                    } catch (Exception ex) {
                        ex.printStackTrace();
                    }
                }
            }
        }
        if ((hs = atts.get(ATTR_SLD_RENDER_LIGHT_COUNT)) != null) {
            int lightCount = Integer.parseInt(hs);
            pFlame.getSolidRenderSettings().getLights().clear();
            for (int i = 0; i < lightCount; i++) {
                DistantLight light = new DistantLight();
                pFlame.getSolidRenderSettings().getLights().add(light);
                if ((hs = atts.get(ATTR_SLD_RENDER_LIGHT_ALTITUDE + i)) != null) {
                    light.setAltitude(Double.parseDouble(hs));
                }
                if ((hs = atts.get(ATTR_SLD_RENDER_LIGHT_AZIMUTH + i)) != null) {
                    light.setAzimuth(Double.parseDouble(hs));
                }
                if ((hs = atts.get(ATTR_SLD_RENDER_LIGHT_INTENSITY + i)) != null) {
                    light.setIntensity(Double.parseDouble(hs));
                }
                if ((hs = atts.get(ATTR_SLD_RENDER_LIGHT_SHADOW_INTENSITY + i)) != null) {
                    light.setShadowIntensity(Double.parseDouble(hs));
                }
                if ((hs = atts.get(ATTR_SLD_RENDER_LIGHT_RED + i)) != null) {
                    light.setRed(Double.parseDouble(hs));
                }
                if ((hs = atts.get(ATTR_SLD_RENDER_LIGHT_GREEN + i)) != null) {
                    light.setGreen(Double.parseDouble(hs));
                }
                if ((hs = atts.get(ATTR_SLD_RENDER_LIGHT_BLUE + i)) != null) {
                    light.setBlue(Double.parseDouble(hs));
                }
                if ((hs = atts.get(ATTR_SLD_RENDER_LIGHT_SHADOWS + i)) != null) {
                    light.setCastShadows(Integer.parseInt(hs) == 1);
                }
                {
                    MotionCurve curve = light.getAltitudeCurve();
                    String namePrefix = AbstractFlameReader.ATTR_SLD_RENDER_LIGHT_ALTITUDE + i + "_";
                    readMotionCurveAttributes(atts, curve, namePrefix);
                }
                {
                    MotionCurve curve = light.getAzimuthCurve();
                    String namePrefix = AbstractFlameReader.ATTR_SLD_RENDER_LIGHT_AZIMUTH + i + "_";
                    readMotionCurveAttributes(atts, curve, namePrefix);
                }
            }
        }
    }
    readMotionCurves(pFlame, atts, null);
    if ((hs = atts.get(ATTR_CHANNEL_MIXER_MODE)) != null) {
        try {
            pFlame.setChannelMixerMode(ChannelMixerMode.valueOf(hs));
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
    switch(pFlame.getChannelMixerMode()) {
        case BRIGHTNESS:
            readMotionCurveAttributes(atts, pFlame.getMixerRRCurve(), ATTR_CHANNEL_MIXER_RR_CURVE + "_");
            break;
        case RGB:
            readMotionCurveAttributes(atts, pFlame.getMixerRRCurve(), ATTR_CHANNEL_MIXER_RR_CURVE + "_");
            readMotionCurveAttributes(atts, pFlame.getMixerGGCurve(), ATTR_CHANNEL_MIXER_GG_CURVE + "_");
            readMotionCurveAttributes(atts, pFlame.getMixerBBCurve(), ATTR_CHANNEL_MIXER_BB_CURVE + "_");
            break;
        case FULL:
            readMotionCurveAttributes(atts, pFlame.getMixerRRCurve(), ATTR_CHANNEL_MIXER_RR_CURVE + "_");
            readMotionCurveAttributes(atts, pFlame.getMixerRGCurve(), ATTR_CHANNEL_MIXER_RG_CURVE + "_");
            readMotionCurveAttributes(atts, pFlame.getMixerRBCurve(), ATTR_CHANNEL_MIXER_RB_CURVE + "_");
            readMotionCurveAttributes(atts, pFlame.getMixerGRCurve(), ATTR_CHANNEL_MIXER_GR_CURVE + "_");
            readMotionCurveAttributes(atts, pFlame.getMixerGGCurve(), ATTR_CHANNEL_MIXER_GG_CURVE + "_");
            readMotionCurveAttributes(atts, pFlame.getMixerGBCurve(), ATTR_CHANNEL_MIXER_GB_CURVE + "_");
            readMotionCurveAttributes(atts, pFlame.getMixerBRCurve(), ATTR_CHANNEL_MIXER_BR_CURVE + "_");
            readMotionCurveAttributes(atts, pFlame.getMixerBGCurve(), ATTR_CHANNEL_MIXER_BG_CURVE + "_");
            readMotionCurveAttributes(atts, pFlame.getMixerBBCurve(), ATTR_CHANNEL_MIXER_BB_CURVE + "_");
            break;
        default:
            break;
    }
    return atts;
}
Also used : DOFBlurShape(org.jwildfire.create.tina.render.dof.DOFBlurShape) FilterKernelType(org.jwildfire.create.tina.render.filter.FilterKernelType) MaterialSettings(org.jwildfire.create.tina.base.solidrender.MaterialSettings) FilteringType(org.jwildfire.create.tina.render.filter.FilteringType) XMLAttributes(org.jwildfire.base.Tools.XMLAttributes) MotionCurve(org.jwildfire.create.tina.base.motion.MotionCurve) VariationFuncList(org.jwildfire.create.tina.variation.VariationFuncList) List(java.util.List) DistantLight(org.jwildfire.create.tina.base.solidrender.DistantLight)

Aggregations

DistantLight (org.jwildfire.create.tina.base.solidrender.DistantLight)2 MaterialSettings (org.jwildfire.create.tina.base.solidrender.MaterialSettings)2 DOFBlurShape (org.jwildfire.create.tina.render.dof.DOFBlurShape)2 ArrayList (java.util.ArrayList)1 List (java.util.List)1 XMLAttributes (org.jwildfire.base.Tools.XMLAttributes)1 MotionCurveAttribute (org.jwildfire.create.tina.animate.AnimationService.MotionCurveAttribute)1 MotionCurve (org.jwildfire.create.tina.base.motion.MotionCurve)1 LightDiffFuncPreset (org.jwildfire.create.tina.base.solidrender.LightDiffFuncPreset)1 FilterKernelType (org.jwildfire.create.tina.render.filter.FilterKernelType)1 FilteringType (org.jwildfire.create.tina.render.filter.FilteringType)1 VariationFuncList (org.jwildfire.create.tina.variation.VariationFuncList)1