It is very usefull and the only thing that puzzles me is why it's not in the help files at all as far as I can tell!
It's actually not so complicated once you use it ... not for what I'm using it for anyway. I am using it in the open source .3dw importer I am working on. I am using it to do the lightmapping on the level. To take the main texture and lightmap texture and blend them together for the lightmapping effect. This is done by an effect called modulation (mode 4 in that command) usually, but I had to use modulation 2x (mode 5) to make it brighter to match 3dws's lighting.
I'm late for work now, but I can post a full example showing it later if you want.
[edit] Here is a slightly modified version of the code Green Gandalf sent me for the matrix utilities command changed to use this.
set display mode desktop width(), desktop height(), 32
sync on: sync rate 60: sync
autocam off
position camera 0, 50, -300
point camera 0, 0, 0
color backdrop rgb(0, 0, 0)
make object sphere 1, 50
position object 1, 0, 0, 0
make object cube 2, 40
make mesh from object 1, 2
add limb 1, 1, 1
add limb 1, 2, 1
delete mesh 1
delete object 2
offset limb 1, 1, -100, 0, 0
offset limb 1, 2, 100, 0, 0
create bitmap 1, 64, 64
cls rgb(0, 255, 0)
ink rgb(255, 0, 0), 0
set text size 36
text 20, 20, str$(1)
get image 1, 0, 0, 64, 64
cls rgb(0, 0, 255)
ink rgb(255, 255, 0), 0
set text size 36
text 20, 20, str$(2)
get image 2, 0, 0, 64, 64
cls rgb(255, 255, 255)
box 20, 20, 44, 44, rgb(128, 0, 128), rgb(128, 0, 128), rgb(128, 0, 128), rgb(128, 0, 128)
get image 3, 0, 0, 64, 64
cls rgb(255, 255, 255)
box 25, 0, 39, 64, rgb(128, 0, 128), rgb(128, 0, 128), rgb(128, 0, 128), rgb(128, 0, 128)
get image 4, 0, 0, 64, 64
if file exist("im1.png") then delete file "im1.png"
if file exist("im2.png") then delete file "im2.png"
if file exist("im3.png") then delete file "im3.png"
if file exist("im4.png") then delete file "im4.png"
save image "im1.png", 1
save image "im2.png", 2
save image "im3.png", 3
save image "im4.png", 4
set current bitmap 0
` apply stage 0 textures
texture limb 1, 0, 0, 1
texture limb 1, 1, 0, 2
texture limb 1, 2, 0, 2
` apply stage 1 textures
texture limb 1, 0, 1, 3
texture limb 1, 1, 1, 3
texture limb 1, 2, 1, 4
SET BLEND MAPPING ON 1, 0, 1, 3, 3, 5, 1, 2, -1, 1
SET BLEND MAPPING ON 1, 1, 1, 3, 3, 5, 1, 2, -1, 1
SET BLEND MAPPING ON 1, 2, 1, 4, 3, 5, 1, 2, -1, 1
global cx#
global cy#
cx# = camera angle x()
cy# = camera angle y()
repeat
positionCamera()
sync
until spacekey()
end
function positionCamera()
control camera using arrowkeys 0, 1, 0
cx# = cx# + mousemovey()*0.25: cy# = cy# + mousemovex()*0.25
rotate camera cx#, cy#, 0
endfunction
