[sldev] Packing alogrithm behind LAND_LAYER_CODE partof
aLayerData message [SOLVED]
Tleiades
tleiades at hotmail.com
Wed Mar 14 23:25:15 PDT 2007
Wow :-)
That was exactly the kind of information I was looking for. Thanks
Tleiades
----- Original Message -----
From: "Adam Frisby" <adam at gwala.net>
To: <sldev at lists.secondlife.com>
Sent: Wednesday, March 14, 2007 10:56 PM
Subject: Re: [sldev] Packing alogrithm behind LAND_LAYER_CODE partof
aLayerData message
> OK, the basic format is fairly simple, essentially:
>
> GROUP HEADER
> repeat {
> BLOCK HEADER
> "RLE"-style encoded BLOCK
> }
>
> "BLOCK" is usually a 16x16 DCT-encoded cell with a fairly quick encoding
> scheme over the top, basically you use the BLOCK HEADER to determine which
> patch this block is for and how long it runs for, and then decode and
> inverse DCT the result and place it in your main 256x256 heightmap array.
>
> However, it is possible to encode a larger or smaller cell than 16x16
> through the use of a seperate encoding path, we've never actually seen
> this used, but it is theoretically possible. (Possibly intended to encode
> a lower-detail version of the heightmap, and send that before the high
> resolution ones)
>
> There's a working encoder and decoder in the TerrainManager of
> libsecondlife, it's a pretty decent implementation (thanks to John) that's
> also being used in OpenSim.
>
> Adam
>
> Jesse Nesbitt wrote:
>
>> I believe that the OpenSim project has a working LayerData encoder, you
>> might want to check with them.
>> I know that John Hurliman and Adam Zaius have done LayerData work, if
>> you're lucky one of them might chime in.
>>
>> On 3/14/07, *Tleiades* <tleiades at hotmail.com
>> <mailto:tleiades at hotmail.com>> wrote:
>>
>> I decided that maybe I should try to tell what I have already
>> figured out, and what hunches I have.
>> This specific subtype of the LayerData message starts with a
>> GroupHeader,
>> containing a patch size, a stride and a repetition of the layer
>> type. I haven't figured the exact purpose of the stride yet, but
>> believe I have the other two fields pinned down.
>> Next follows a number of patches, each patch begins with a header.
>> The only things in the header I have been able to determine is that
>> quant_wbits (in part) encodes the size of the following numeric
>> data, and that patchids seems to reference some sort of co-ordinate
>> system.
>> Following the patch header is a bitpattern, which depending on bits
>> turned on or off either idicates zero, negative or positive number,
>> the size of the numbers are determined by the quant_wbits field. My
>> guess is that the numbers are height encodings.
>> In short the message encodes a packed height field, but I really
>> have no clue on how to combine the individual LayerData messages
>> into a complete height map.
>> ----- Original Message -----
>> *From:* Tleiades <mailto:tleiades at hotmail.com>
>> *To:* sldev at lists.secondlife.com
>> <mailto:sldev at lists.secondlife.com>
>> *Sent:* Wednesday, March 14, 2007 6:46 PM
>> *Subject:* [sldev] Packing alogrithm behind LAND_LAYER_CODE part
>> of aLayerData message
>>
>> Hi
>> I've been trying to figure out the algorithm behind packing and
>> decoding the LAND_LAYER_CODE part of a LayerData message. I'd
>> like to get the broad picture of how that data is encoded, but I
>> seem to get lost, not seeing the forest, because all the trees
>> get in the way.
>> Is there someone who can provide me with an overall picture of
>> the algorithm or point me to some url's explaining the algorithm?
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> Click here to unsubscribe or manage your list subscription:
>> /index.html
>>
>>
>> _______________________________________________
>> Click here to unsubscribe or manage your list subscription:
>> /index.html
>>
>>
>>
>>
>> --
>> --Jesse
>>
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> Click here to unsubscribe or manage your list subscription:
>> /index.html
>
> _______________________________________________
> Click here to unsubscribe or manage your list subscription:
> /index.html
>
More information about the SLDev
mailing list