[Paraview] ParaviewWeb : Repeated calls to GetLookupTableForArray do not change the RGBpoints array

Rajvikram Singh rajvikrams at yahoo.com
Thu May 19 14:20:00 EDT 2011


Hi Sebastien

Here are the two javascript functions used for setting up the volume visualization. The second one (loadXMLColorMap()) is where Jquery is used to read the colormaps from the XML file. The variables Lut, Sof and CurrColormapFile are global. CurrColormapFile is the XML file chosen by the user from the UI :

        // **********************************************************************************************
        // set displayProperties for a particular data to show as volume 
        // **********************************************************************************************
        this.setupVolumeView = function (_data, _view) {

            // load and setup the LUT and SOF before changing representation
            this.loadXMLColorMap("./colormaps/" + CurrColormapFile);

            pv.SetDisplayProperties( {
            proxy : _data,
            view  : _view,
            SelectMapper : 'GPU',
            Representation : 'Volume',
            LookupTable : Lut,
            ColorArrayName : 'ImageFile',
            ScalarOpacityFunction : Sof
            } );

        } // end of setDisplayToVolume()


        // **********************************************************************************************
        // Load a Paraview color map from an XML file
        // **********************************************************************************************
        this.loadXMLColorMap = function(_file) {

            var colorSpace = 'None';
            var nanField;
            var rgbPointsIdx = 0;
            var sofPointsIdx = 0;
            var i, x, o, r, g, b;
            
            var nanColor = new Array();
            var rgbPoints = new Array();
            var sofPoints = new Array();

            jQuery.ajax({
                url : _file,
                success : function(data) {
                    // get the color space
                    colorSpace = jQuery(data).find("ColorMap").attr("space");

                    // get the values to create LUT and SOF    
                    jQuery(data).find("Point").each(function() {
                        i = jQuery(this);
                        x = parseFloat(i.attr("x"));
                        o = parseFloat(i.attr("o"));
                        r = parseFloat(i.attr("r"));
                        g = parseFloat(i.attr("g"));
                        b = parseFloat(i.attr("b"));
    
                        // Populate the rgbPoints array
                        rgbPoints[rgbPointsIdx++] = x;
                        rgbPoints[rgbPointsIdx++] = r;
                        rgbPoints[rgbPointsIdx++] = g;
                        rgbPoints[rgbPointsIdx++] = b;

                        //Populate the sof Points array
                        sofPoints[sofPointsIdx++] = x;
                        sofPoints[sofPointsIdx++] = o;

                    });

                    nanField = jQuery(data).find("NaN");
                    nanColor[0] = parseFloat(nanField.attr("r"));
                    nanColor[1] = parseFloat(nanField.attr("g"));
                    nanColor[2] = parseFloat(nanField.attr("b"));
                    },
                
                async : false
            });

                
            
            // Create the LUT and SOF needed for the transfer function
            Lut = pv.GetLookupTableForArray({arrayname : "ImageFile", num_components : 1, HSVWrap : 0, NanColor : nanColor, RGBPoints : rgbPoints, ColorSpace : colorSpace});

            Sof = pv.CreatePiecewiseFunction( {Points: sofPoints});            

        } // End of loadXMLColorMap()



Thanks again.
- Raj


--- On Thu, 19/5/11, Sebastien Jourdain <sebastien.jourdain at kitware.com> wrote:

From: Sebastien Jourdain <sebastien.jourdain at kitware.com>
Subject: Re: [Paraview] ParaviewWeb : Repeated calls to GetLookupTableForArray do not change the RGBpoints array
To: "Rajvikram Singh" <rajvikrams at yahoo.com>
Cc: "Utkarsh Ayachit" <utkarsh.ayachit at kitware.com>, paraview at paraview.org
Date: Thursday, 19 May, 2011, 10:37 PM

Hi Raj,
could you send the piece of code that update those RGBPoints values ? 
Thanks,
Seb

On Thu, May 19, 2011 at 12:58 PM, Rajvikram Singh <rajvikrams at yahoo.com> wrote:

Hi Utkarsh
    I'm using Jquery to load the .XML files. It works without any problems the first time and RGBPoints extracted from the XML are applied correctly. 

The problem arises when the users selects a different XML file (different colormap). When the GetLookupTableForArray is called again with the new set of RGBPoints, the visualization does not look correct. It looks like the the lookuptable maintained the earlier RGBPoints and merged the new set with the old. 

I was wondering if this was a bug or if their
 was a way to reset the lut to forget the old RGBPoints
ThanksRaj


--- On Thu, 19/5/11, Utkarsh Ayachit <utkarsh.ayachit at kitware.com> wrote:


From: Utkarsh Ayachit <utkarsh.ayachit at kitware.com>
Subject: Re: [Paraview] ParaviewWeb : Repeated calls to GetLookupTableForArray do not change the RGBpoints array

To: "Rajvikram Singh" <rajvikrams at yahoo.com>
Cc: paraview at paraview.org
Date: Thursday, 19 May, 2011, 6:49 PM


How are you loading
 the default.xml? Do the best of my knowledge, ParaView Python API has no call to setup LUTs from XML.
Utkarsh

On Wed, May 18, 2011 at 8:45 PM, Rajvikram Singh <rajvikrams at yahoo.com> wrote:


Hi
   I've a case where the users can load .xml files saved from the Paraview's 'Edit Color Map' widget and apply the color maps (containing R,G,B and Opacity values) to volume rendering.



When I start the application a call is made is load a "default.xml" file and then do a :

Lut = pv.GetLookupTableForArray({arrayname : "ImageFile", num_components : 1, HSVWrap : 0, NanColor : nanColor, RGBPoints : rgbPoints, ColorSpace : colorSpace});



Sof = pv.CreatePiecewiseFunction( {Points: sofPoints});    

The variables nanColor, rgbPoints, sofPoints etc are populated by the XML file data. Then the Lookuptable is applied to the DisplayProperties for volume rendering. This part works well. 



However when the user changes the .xml color map file from a drop down, the same code is called again and this time it does
 something funny. It seems to retain the previous RGBPoints information and adds the new color map to it. So the two lookup tables look like they are merged. Is this expected ?

Is there a way to reset the lookup table ? I did not see any obvious call within simple.py or pwsimple.py.



Thanks
Raj

_______________________________________________

Powered by www.kitware.com



Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html



Please keep messages on-topic and check the ParaView Wiki at: http://paraview.org/Wiki/ParaView



Follow this link to subscribe/unsubscribe:

http://www.paraview.org/mailman/listinfo/paraview





_______________________________________________

Powered by www.kitware.com



Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html



Please keep messages on-topic and check the ParaView Wiki at: http://paraview.org/Wiki/ParaView



Follow this link to subscribe/unsubscribe:

http://www.paraview.org/mailman/listinfo/paraview




-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.paraview.org/pipermail/paraview/attachments/20110519/3c1648b3/attachment-0001.htm>


More information about the ParaView mailing list