sv_Appearance

This class is used to create Java3D Appearances

Contents

classdef sv_Appearance
    % This defines the sv_Appearance class.

    %   URL : $URL: $
    %   Log : $Id: sv_Appearance.html,v 1.1 2008/07/23 12:51:21 jberg Exp $
    %   Copyright (c) 2008 The MathWorks, Inc.

Class Properties

    properties ( SetAccess = 'private', GetAccess = 'public', Constant = true )
        RED     = sv_Appearance.create_static_appearance([1 0 0],[1 0 0],[],[],75,0.25);
        GREEN   = sv_Appearance.create_static_appearance([0 1 0],[0 1 0],[],[],75,0.25);
        BLUE    = sv_Appearance.create_static_appearance([0 0 1],[0 0 1],[],[],75,0.25);
        CYAN    = sv_Appearance.create_static_appearance([0 1 1],[0 1 1],[],[],75,0.25);
        WHITE   = sv_Appearance.create_static_appearance([1 1 1],[1 1 1],[],[],75,0.25);
        BLACK   = sv_Appearance.create_static_appearance([0 0 0],[0 0 0],[],[],75,0.25);
        BRIGHT_RED     = sv_Appearance.create_static_appearance([1 0 0],[1 0 0],[],[],128,0.0);
        BRIGHT_GREEN   = sv_Appearance.create_static_appearance([0 1 0],[0 1 0],[],[],128,0.0);
        BRIGHT_BLUE    = sv_Appearance.create_static_appearance([0 0 1],[0 0 1],[],[],128,0.0);
        BRIGHT_CYAN    = sv_Appearance.create_static_appearance([0 1 1],[0 1 1],[],[],128,0.0); %#ok<REDEF>
    end

    methods ( Static = true )

Public Static HELPER Methods

        function out = create_appearance(varargin)
            [material transparencyAttribute] = ...
                sv_Appearance.create_attributes(varargin{:});

            out = javax.media.j3d.Appearance();
            out.setMaterial(material);
            out.setCapability(out.ALLOW_TRANSPARENCY_ATTRIBUTES_WRITE);
            out.setTransparencyAttributes(transparencyAttribute);
        end
    end

    methods ( Access = 'private', Static = true )

Private Static HELPER Methods

        function out = create_static_appearance(varargin)
            [material transparencyAttribute] = ...
                sv_Appearance.create_attributes(varargin{:});

            out = javax.media.j3d.Appearance();
            out.setCapability(out.ALLOW_MATERIAL_WRITE);
            out.setCapability(out.ALLOW_TRANSPARENCY_ATTRIBUTES_WRITE);
            out.setMaterial(material);
            out.setTransparencyAttributes(transparencyAttribute);
        end
        function [material transparencyAttribute] = create_attributes(varargin)
            import javax.media.j3d.*;
            import javax.vecmath.*;

            % Define Defaults
            the_args = cell(6,1);
            the_args{1} = [0.5 0.5 0.5];% default ambientColor (grey)
            the_args{2} = [0.5 0.5 0.5];% default emissiveColor (grey)
            the_args{3} = [0 0 0];      % default diffuseColor (black)
            the_args{4} = [1 1 1];      % default specularColor (white)
            the_args{5} = 100;          % default shininess (1-128)  dull -to- shiny
            the_args{6} = 0.25;         % default transparency (0-1)  opaque -to- invisible

            % Assign any inputs to arguments
            for ii = 1:nargin
                if(~isempty(varargin{ii}))
                    the_args{ii} = varargin{ii};
                end
            end

            ambientColor	= the_args{1};
            emissiveColor	= the_args{2};
            diffuseColor	= the_args{3};
            specularColor	= the_args{4};
            shininess		= the_args{5};
            transparency	= the_args{6};

            material	= Material(...
                Color3f(ambientColor(1),ambientColor(2),ambientColor(3)),...
                Color3f(emissiveColor(1),emissiveColor(2),emissiveColor(3)),...
                Color3f(diffuseColor(1),diffuseColor(2),diffuseColor(3)),...
                Color3f(specularColor(1),specularColor(2),specularColor(3)),...
                shininess);

            transparencyAttribute = ...
                TransparencyAttributes(TransparencyAttributes.NICEST,transparency);
        end
    end
end