From info-volumizer-owner@els.sgi.com Thu Oct  2 13:02:35 2003
Received: (from majordom@localhost)
	by els.sgi.com (8.12.10/8.12.2/els-2.2) id h92K1s1H5623946;
	Thu, 2 Oct 2003 13:01:54 -0700 (PDT)
Received: from aerodyne.technion.ac.il (aerodyne.technion.ac.il [132.68.147.2])
	by els.sgi.com (8.12.10/8.12.2/els-2.2) with ESMTP id h91Ke1gJ5582156
	for <info-volumizer@els.sgi.com>; Wed, 1 Oct 2003 13:40:02 -0700 (PDT)
Received: from [132.68.147.9] ([132.68.147.9])
	by aerodyne.technion.ac.il (8.12.9/8.12.8) with ESMTP id h91Kapm0111448
	for <info-volumizer@els.sgi.com>; Wed, 1 Oct 2003 23:36:51 +0300
Date: Wed, 1 Oct 2003 23:37:14 +0300 (IDT)
From: Yakov Mindelis <jack@aerodyne.technion.ac.il>
X-X-Sender: jack@aeone.technion.ac.il
To: info-volumizer@els.sgi.com
Subject: [info-volumizer] Problem with structured grid 
Message-ID: <Pine.LNX.4.44.0310012336390.884-200000@aeone.technion.ac.il>
MIME-Version: 1.0
Content-Type: MULTIPART/Mixed; BOUNDARY="118079656-2031330196-1065040459=:884"
Content-ID: <Pine.LNX.4.44.0310012336391.884@aeone.technion.ac.il>
Sender: owner-info-volumizer@els.sgi.com
Precedence: bulk
Reply-To: info-volumizer@els.sgi.com

  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

--118079656-2031330196-1065040459=:884
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
Content-ID: <Pine.LNX.4.44.0310012336392.884@aeone.technion.ac.il>

Hi all,


I'm trying to use volumizer2 with structured hexahedral mesh. As trial I 
modified the /usr/share/Volumizer2/src/app/simplee/pguide/glut.cxx 
(the modified file is attached) and I can't get nothing to be drawn:-(

I try to use structured hexahedral mesh of one cube 1.0x1.0x1.0, simple 
luts (rgba or intensity). 

I think that lut is initialized ok, vertex coords are the only suspect 
here.

Any ideas?
Thanks in advance,
Jack.

--118079656-2031330196-1065040459=:884
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="myexample.c++"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.44.0310012334190.884@aeone.technion.ac.il>
Content-Description: 
Content-Disposition: ATTACHMENT; FILENAME="myexample.c++"

Ly8gQyAvIEMrKw0KI2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3Rk
bGliLmg+DQojaW5jbHVkZSA8aW9zdHJlYW0uaD4NCg0KLy8gT3BlbkdMIC8g
R0xVVA0KI2luY2x1ZGUgPEdML2dsLmg+DQojaW5jbHVkZSA8R0wvZ2x1dC5o
Pg0KDQovLyBJRkwNCiNpbmNsdWRlIDxsb2FkZXJzL0lGTExvYWRlci5oPg0K
DQovLyBWb2x1bWl6ZXIyDQojaW5jbHVkZSA8Vm9sdW1pemVyMi9WZXJzaW9u
Lmg+DQojaW5jbHVkZSA8Vm9sdW1pemVyMi9TaGFwZS5oPg0KI2luY2x1ZGUg
PFZvbHVtaXplcjIvR2VvbWV0cnkuaD4NCiNpbmNsdWRlIDxWb2x1bWl6ZXIy
L1ZlcnRleEFycmF5Lmg+DQojaW5jbHVkZSA8Vm9sdW1pemVyMi9TdHJ1Y3R1
cmVkSGV4YU1lc2guaD4NCiNpbmNsdWRlIDxWb2x1bWl6ZXIyL0FwcGVhcmFu
Y2UuaD4NCiNpbmNsdWRlIDxWb2x1bWl6ZXIyL1BhcmFtZXRlclZlcnRleERh
dGEuaD4NCiNpbmNsdWRlIDxWb2x1bWl6ZXIyL1BhcmFtZXRlckxvb2t1cFRh
YmxlLmg+DQovLyBQcm9qZWN0ZWQgdGV0cmFoZWRyYSBSZW5kZXIgQWN0aW9u
Li4uDQojaW5jbHVkZSA8Vm9sdW1pemVyMi9QVFJlbmRlckFjdGlvbi5oPg0K
I2luY2x1ZGUgPFZvbHVtaXplcjIvUFRMVVRTaGFkZXIuaD4NCi8vIEdsb2Jh
bCB2YXJpYWJsZXMNCnZ6U2hhcGUgKnNoYXBlID0gTlVMTDsNCnZ6UFRSZW5k
ZXJBY3Rpb24gKnJlbmRlckFjdGlvbiA9IE5VTEw7DQpHTGludCB2aWV3cG9y
dFs0XTsNCmludCBsYXN0UG9zaXRpb25bMl0gPSB7MCwgMH07DQpmbG9hdCBh
bmdsZXNbMl0gPSB7MCwgMH0sIGxhc3RBbmdsZXNbMl0gPSB7MCwgMH07DQoN
Ci8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyBWb2x1bWl6ZXIgLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vDQoNCi8vICBMb2FkIHRoZSB2b2x1bWUg
ZGF0YSBhbmQgaW5pdGlhbGl6ZSB0aGUgc2hhcGUgbm9kZS4NCnZvaWQgbG9h
ZFZvbHVtZURhdGEoY2hhciAqZmlsZU5hbWUpDQp7DQogICAgLy8gUHJpbnQg
dGhlIHZvbHVtaXplciB2ZXJzaW9uIHN0cmluZw0KICAgIGNlcnI8PHZ6R2V0
VmVyc2lvblN0cmluZygpPDxlbmRsOw0KDQovLyAgICAgLy8gQ3JlYXRlIGEg
ZGF0YSBsb2FkZXINCi8vICAgICAvLyAgICBJRkxMb2FkZXIgKmxvYWRlciA9
IElGTExvYWRlcjo6b3BlbihmaWxlTmFtZSk7DQovLyAgICAgaWYgKGxvYWRl
ciA9PSBOVUxMKSB7DQovLyAgICAgICAgIGNlcnI8PCJFcnJvcjogY291bGRu
J3Qgb3BlbiBmaWxlICI8PGZpbGVOYW1lPDxlbmRsOw0KLy8gICAgICAgICBl
eGl0KDApOyANCi8vICAgICB9IA0KDQoNCiAgICAvLyBMb2FkIHRoZSB2b2x1
bWUgZGF0YSANCi8vICAgICB2elBhcmFtZXRlclZvbHVtZVRleHR1cmUgKnZv
bHVtZSA9IGxvYWRlci0+bG9hZFZvbHVtZSgpOyANCi8vICAgICBpZiAodm9s
dW1lID09IE5VTEwpIHsNCi8vICAgICAgIGNlcnI8PCJFcnJvcjpjb3VsZG4n
dCByZWFkIHZvbHVtZSBkYXRhIjw8ZW5kbDsNCi8vICAgICAgICAgZGVsZXRl
IGxvYWRlcjsNCi8vICAgICAgICAgZXhpdCgwKTsNCi8vICAgICB9DQogICAg
DQoNCiAgICBjb25zdCBpbnQgZGltWzNdID0gezIsMiwyfTsNCiAgICAvL2Rh
dGENCiAgICBmbG9hdCBkYXRhWzhdID0gezIuMCwNCgkJICAgICAyLjAsDQoJ
CSAgICAgMi4wLA0KCQkgICAgIDIuMCwNCgkJICAgICAxLjAsIA0KCQkgICAg
IDEuMCwgDQoJCSAgICAgMS4wLCANCgkJICAgICAxLjB9Ow0KDQogICAgLy9s
dXRzDQogICAgZmxvYXQgbHV0ZGF0YXJnYmFbMTZdID0gezAuNSwgMC41LCAw
LjUsIDEuMCwNCgkJCSAgICAgMC41LCAwLjUsIDAuNSwgMS4wLA0KCQkJICAg
ICAwLjUsIDAuNSwgMC41LCAxLjAsDQoJCQkgICAgIDAuNSwgMC41LCAwLjUs
IDEuMH07DQogICAgZmxvYXQgbHV0ZGF0YWludGVuc2l0eVsyXSA9IHswLjUs
IDEuMH07DQogICAgLy9jb29yZHMNCiAgICBmbG9hdCB4eXpbMjRdID0gezAu
MCwgMC4wLCAwLjAsIA0KCQkgICAgIDEuMCwgMC4wLCAwLjAsDQoJCSAgICAg
MC4wLCAxLjAsIDAuMCwNCgkJICAgICAxLjAsIDEuMCwgMC4wLA0KCQkgICAg
IDAuMCwgMC4wLCAxLjAsIA0KCQkgICAgIDEuMCwgMC4wLCAxLjAsDQoJCSAg
ICAgMC4wLCAxLjAsIDEuMCwNCgkJICAgICAxLjAsIDEuMCwgMS4wfTsNCiAg
ICANCiAgICAvL2Nvb3JkcyBpbiByZXZlcnNlDQogICAgZmxvYXQgeHl6clsy
NF0gPSB7MC4wLCAwLjAsIDAuMCwgDQoJCSAgICAgMC4wLCAwLjAsIDEuMCwg
DQoJCSAgICAgMC4wLCAxLjAsIDAuMCwNCgkJICAgICAwLjAsIDEuMCwgMS4w
LA0KCQkgICAgIDEuMCwgMC4wLCAwLjAsDQoJCSAgICAgMS4wLCAwLjAsIDEu
MCwNCgkJICAgICAxLjAsIDEuMCwgMC4wLA0KCQkgICAgIDEuMCwgMS4wLCAx
LjB9Ow0KICAgIA0KDQogICAgICB2elZlcnRleEFycmF5ICp2ZXJ0ZXhBcnJh
eSA9IG5ldyB2elZlcnRleEFycmF5KDgsICZ4eXpbMF0pOw0KDQogICAgICBm
bG9hdCBiYm94WzZdOw0KICAgIC8vIEluaXRpYWxpemUgZ2VvbWV0cnkNCiAg
ICB2ekdlb21ldHJ5ICpnZW9tZXRyeSA9ICBuZXcgdnpTdHJ1Y3R1cmVkSGV4
YU1lc2goZGltLCB2ZXJ0ZXhBcnJheSk7DQogICAgdmVydGV4QXJyYXktPmNv
bXB1dGVCb3VuZGluZ0JveCAoYmJveCk7DQogICAgcHJpbnRmKCJiYm94Olxu
JWYgJWYgJWYsICVmICVmICVmXG4iLCANCgkgICBiYm94WzBdLCBiYm94WzFd
LCBiYm94WzJdLCBiYm94WzNdLCBiYm94WzRdLCBiYm94WzVdKTsNCiAgICB2
elBhcmFtZXRlclZlcnRleERhdGEgICp2b2x1bWUgPSANCiAgICAgIG5ldyB2
elBhcmFtZXRlclZlcnRleERhdGEgKCA4LCAxLCAmZGF0YVswXSk7DQogICAg
ZmxvYXQgZGF0YXJhbmdlWzJdOw0KICAgIHZvbHVtZS0+Z2V0RGF0YVJhbmdl
KDAsZGF0YXJhbmdlKTsNCiAgICBwcmludGYoImRhdGFyYW5nZTpcbiVmLCAl
ZlxuIiwgZGF0YXJhbmdlWzBdLCBkYXRhcmFuZ2VbMV0pOw0KICAgIC8vICAg
IHZ6UGFyYW1ldGVyTG9va3VwVGFibGUgKmx1dCA9IG5ldyB2elBhcmFtZXRl
ckxvb2t1cFRhYmxlKDQsICZsdXRkYXRhcmdiYVswXSwgVlpfRkxPQVQgLCBW
Wl9SR0JBKTsNCiAgICB2elBhcmFtZXRlckxvb2t1cFRhYmxlICpsdXQgPSBu
ZXcgdnpQYXJhbWV0ZXJMb29rdXBUYWJsZSgyLCAmbHV0ZGF0YWludGVuc2l0
eVswXSwgVlpfRkxPQVQgLCBWWl9MVU1JTkFOQ0UpOw0KICAgIC8vIEluaXRp
YWxpemUgYXBwZWFyYW5jZQ0KICAgIHZ6UFRMVVRTaGFkZXIgKnNoYWRlciA9
IG5ldyB2elBUTFVUU2hhZGVyKCk7DQogICAgdnpBcHBlYXJhbmNlICphcHBl
YXJhbmNlID0gbmV3IHZ6QXBwZWFyYW5jZShzaGFkZXIpOw0KICAgIHNoYWRl
ci0+dW5yZWYoKTsNCiAgICBhcHBlYXJhbmNlLT5zZXRQYXJhbWV0ZXIoInZl
cnRleF9kYXRhIiwgdm9sdW1lKTsNCiAgICBhcHBlYXJhbmNlLT5zZXRQYXJh
bWV0ZXIoImxvb2t1cF90YWJsZSIsIGx1dCk7DQogICAgdm9sdW1lLT51bnJl
ZigpOw0KICAgIGx1dC0+dW5yZWYoKTsNCg0KICAgIC8vIEluaXRpYWxpemUg
c2hhcGUgbm9kZQ0KICAgIHNoYXBlID0gbmV3IHZ6U2hhcGUoZ2VvbWV0cnks
IGFwcGVhcmFuY2UpOw0KICAgIGdlb21ldHJ5LT51bnJlZigpOw0KICAgIGFw
cGVhcmFuY2UtPnVucmVmKCk7DQoNCiAgICAvLyBJbml0aWFsaXplIHRoZSBy
ZW5kZXIgYWN0aW9uDQogICAgcmVuZGVyQWN0aW9uID0gbmV3IHZ6UFRSZW5k
ZXJBY3Rpb24oKTsNCiAgICByZW5kZXJBY3Rpb24tPm1hbmFnZShzaGFwZSk7
DQogICAgfQ0KDQovLyBEcmF3IHRoZSB2b2x1bWUgZGF0YQ0Kdm9pZCByZW5k
ZXJWb2x1bWVEYXRhKCkNCnsNCg0KICBnbENvbG9yM2YoIDEuMCwgMS4wLCAw
LjAgKTsNCiAgDQogIC8vIERvIHRoZSBWb2x1bWl6ZXIgcmVuZGVyaW5nIGhl
cmUuLi4NCiAgcmVuZGVyQWN0aW9uLT5iZWdpbkRyYXcoMCk7DQoNCiAgcmVu
ZGVyQWN0aW9uLT5kcmF3KHNoYXBlKTsNCiAgcmVuZGVyQWN0aW9uLT5lbmRE
cmF3KCk7DQoNCg0KDQogIA0KIC8vICAvLyBEbyB0aGUgVm9sdW1pemVyIHJl
bmRlcmluZyBoZXJlLi4uDQovLyAgIGdsUG9seWdvbk1vZGUoR0xfRlJPTlRf
QU5EX0JBQ0ssIEdMX0xJTkUpOw0KLy8gICAgIC8vIEJlZ2luIGRyYXdpbmcN
Ci8vICAgICByZW5kZXJBY3Rpb24tPmJlZ2luRHJhdygwKTsNCi8vICAgICBy
ZW5kZXJBY3Rpb24tPmRyYXdDZWxscyhzaGFwZSwgZmFsc2UpOw0KLy8gICAg
IHJlbmRlckFjdGlvbi0+ZHJhd0JvdW5kYXJ5KHNoYXBlLCBmYWxzZSk7DQov
LyAgICAgcmVuZGVyQWN0aW9uLT5lbmREcmF3KCk7DQovLyAgIGdsUG9seWdv
bk1vZGUoR0xfRlJPTlRfQU5EX0JBQ0ssIEdMX0ZJTEwpOw0KfQ0KDQovLyBD
bGVhbiB1cCB0aGUgc2hhcGUgbm9kZSBhbmQgdGhlIHJlbmRlciBhY3Rpb24N
CnZvaWQgY2xlYW51cCgpDQp7DQogICAgLy8gRGVsZXRlIHRoZSByZW5kZXIg
YWN0aW9uIGFuZCB1bnJlZigpIHRoZSBzaGFwZSBub2RlDQogICAgcmVuZGVy
QWN0aW9uLT51bm1hbmFnZShzaGFwZSk7DQogICAgZGVsZXRlIHJlbmRlckFj
dGlvbjsNCiAgICBzaGFwZS0+dW5yZWYoKTsNCg0KfQ0KDQovLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLyBHTFVUIGNhbGxiYWNrIGZ1bmN0aW9ucy8vLy8vLy8v
Ly8vLy8vLy8vLy8NCg0KLy8gZ2x1dERpc3BsYXlGdW5jKCkgY2FsbGJhY2sg
ZnVuY3Rpb24NCnZvaWQgZGlzcGxheSgpDQp7DQogICAgZ2xDbGVhcihHTF9D
T0xPUl9CVUZGRVJfQklUKTsNCiAgICBnbERpc2FibGUoR0xfREVQVEhfVEVT
VCk7DQoNCiAgICAvLyBWaWV3cG9ydA0KICAgIGdsVmlld3BvcnQodmlld3Bv
cnRbMF0sIHZpZXdwb3J0WzFdLCB2aWV3cG9ydFsyXSwgdmlld3BvcnRbM10p
Ow0KDQogICAgLy8gUHJvamVjdGlvbiBtYXRyaXgNCiAgICBnbE1hdHJpeE1v
ZGUoR0xfUFJPSkVDVElPTik7DQogICAgZ2xMb2FkSWRlbnRpdHkoKTsNCiAg
ICBnbE9ydGhvKC0xLCAxLCAtMSwgMSwgLTEsIDEpOw0KDQogICAgLy8gTW9k
ZWx2aWV3IG1hdHJpeA0KICAgIGdsTWF0cml4TW9kZShHTF9NT0RFTFZJRVcp
Ow0KICAgIGdsTG9hZElkZW50aXR5KCk7DQogICAgZ2xSb3RhdGVkKCA5MCAr
IGFuZ2xlc1sxXSwgMSwgMCwgMCk7DQogICAgZ2xSb3RhdGVkKDE4MCArIGFu
Z2xlc1swXSwgMCwgMCwgMSk7DQogICAgZ2xTY2FsZWYoMS41LCAxLjUsIDEu
NSk7DQogICAgZ2xUcmFuc2xhdGVmKC0gMC41LCAtIDAuNSwgLSAwLjUpOw0K
DQogICAgLy8gRW5hYmxlIGJhY2stdG8tZnJvbnQgYWxwaGEgYmxlbmRpbmcN
CiAgICBnbEVuYWJsZShHTF9CTEVORCk7DQogICAgZ2xCbGVuZEZ1bmMoR0xf
U1JDX0FMUEhBLCBHTF9PTkVfTUlOVVNfU1JDX0FMUEhBKTsNCg0KICAgIC8v
IFJlbmRlciB0aGUgdm9sdW1lIGRhdGENCiAgICByZW5kZXJWb2x1bWVEYXRh
KCk7DQogICAgZ2x1dFN3YXBCdWZmZXJzKCk7DQp9DQoNCi8vIGdsdXRLZXli
b2FyZEZ1bmMoKSBjYWxsYmFjayBmdW5jdGlvbg0Kdm9pZCBrZXlib2FyZCh1
bnNpZ25lZCBjaGFyIGtleSwgaW50IHgsIGludCB5KQ0Kew0KICAgIHN3aXRj
aCAoa2V5KSB7DQogICAgICAgIGNhc2UgMjc6DQogICAgICAgICAgICBjbGVh
bnVwKCk7DQogICAgICAgICAgICBleGl0KDApOw0KICAgIH0NCn0NCg0KLy8g
Z2x1dFJlc2hhcGVGdW5jKCkgY2FsbGJhY2sgZnVuY3Rpb24NCnZvaWQgcmVz
aGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpDQp7DQoNCiAgICAvLyBVcGRh
dGUgdmlld3BvcnQNCiAgICB2aWV3cG9ydFswXSA9IDA7ICAgICB2aWV3cG9y
dFsxXSA9IDA7DQogICAgdmlld3BvcnRbMl0gPSB3aWR0aDsgdmlld3BvcnRb
M10gPSBoZWlnaHQ7DQogICAgZ2x1dFBvc3RSZWRpc3BsYXkoKTsNCn0NCg0K
Ly8gZ2x1dE1vdXNlRnVuYygpIGNhbGxiYWNrIGZ1bmN0aW9uDQp2b2lkIG1v
dXNlKGludCBidXR0b24sIGludCBzdGF0ZSwgaW50IHgsIGludCB5KQ0Kew0K
ICAgIGlmIChzdGF0ZSA9PSBHTFVUX0RPV04pIHsNCiAgICAgICAgbGFzdFBv
c2l0aW9uWzBdID0geDsNCiAgICAgICAgbGFzdFBvc2l0aW9uWzFdID0geTsN
CiAgICAgICAgbGFzdEFuZ2xlc1swXSA9IGFuZ2xlc1swXTsNCiAgICAgICAg
bGFzdEFuZ2xlc1sxXSA9IGFuZ2xlc1sxXTsNCiAgICB9DQp9DQoNCi8vIGds
dXRNb3Rpb25GdW5jKCkgY2FsbGJhY2sgZnVuY3Rpb24NCnZvaWQgbW90aW9u
KGludCB4LCBpbnQgeSkNCnsNCiAgICBhbmdsZXNbMF0gPSBsYXN0QW5nbGVz
WzBdICsgKGxhc3RQb3NpdGlvblswXSAtIHgpIC8gNC4wOw0KICAgIGFuZ2xl
c1sxXSA9IGxhc3RBbmdsZXNbMV0gKyAoeSAtIGxhc3RQb3NpdGlvblsxXSkg
LyA0LjA7DQogICAgZ2x1dFBvc3RSZWRpc3BsYXkoKTsNCn0NCg0KLy8gbWFp
bg0Kdm9pZCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pDQp7DQogIGlm
KGFyZ2MgPjEpIHsNCiAgICBjZXJyPDwiVXNhZ2U6ICI8PGFyZ3ZbMF08PGVu
ZGw7DQogICAgZXhpdCgwKTsNCiAgfQ0KICAgIGdsdXRJbml0KCZhcmdjLCBh
cmd2KTsNCiAgICBsb2FkVm9sdW1lRGF0YShhcmd2WzFdKTsNCg0KICAgIC8v
IEluaXRpYWxpemUgd2luZG93DQogICAgZ2x1dEluaXREaXNwbGF5TW9kZShH
TFVUX1JHQiB8IEdMVVRfRE9VQkxFKTsNCiAgICBnbHV0Q3JlYXRlV2luZG93
KCJTaW1wbGUgVm9sdW1lIFZpZXdlciIpOw0KDQogICAgLy8gSW5pdGlhbGl6
ZSBjYWxsYmFja3MNCiAgICBnbHV0RGlzcGxheUZ1bmMoZGlzcGxheSk7DQog
ICAgZ2x1dFJlc2hhcGVGdW5jKHJlc2hhcGUpOw0KICAgIGdsdXRLZXlib2Fy
ZEZ1bmMoa2V5Ym9hcmQpOw0KICAgIGdsdXRNb3VzZUZ1bmMobW91c2UpOw0K
ICAgIGdsdXRNb3Rpb25GdW5jKG1vdGlvbik7DQogICAgZ2x1dE1haW5Mb29w
KCk7DQp9DQo=
--118079656-2031330196-1065040459=:884--

From info-volumizer-owner@els.sgi.com Fri Oct  3 03:48:11 2003
Received: (from majordom@localhost)
	by els.sgi.com (8.12.10/8.12.2/els-2.2) id h93AlQvW5576783;
	Fri, 3 Oct 2003 03:47:26 -0700 (PDT)
Received: from sgindia.newdelhi.sgi.com (newdelhi.sgi.com [134.14.90.2])
	by els.sgi.com (8.12.10/8.12.2/els-2.2) with ESMTP id h93AWZgJ5326202
	for <info-volumizer@els.sgi.com>; Fri, 3 Oct 2003 03:32:36 -0700 (PDT)
Received: from praveenlaptop ([134.14.90.74]) by sgindia.newdelhi.sgi.com (980427.SGI.8.8.8/980728.SGI.AUTOCF) via SMTP id OAA54365 for <info-volumizer@els.sgi.com>; Fri, 3 Oct 2003 14:47:22 +0530 (IST)
Message-ID: <009a01c3899a$1e5483d0$4a5a0e86@praveenlaptop>
From: "Praveen Bhaniramka" <praveenb@sgi.com>
To: <info-volumizer@els.sgi.com>
References: <Pine.LNX.4.44.0310012336390.884-200000@aeone.technion.ac.il>
Subject: Re: [info-volumizer] Problem with structured grid 
Date: Fri, 3 Oct 2003 16:05:42 +0530
MIME-Version: 1.0
Content-Type: multipart/mixed;
	boundary="----=_NextPart_000_0093_01C389C8.3220F0F0"
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2800.1106
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106
Sender: owner-info-volumizer@els.sgi.com
Precedence: bulk
Reply-To: info-volumizer@els.sgi.com

This is a multi-part message in MIME format.

------=_NextPart_000_0093_01C389C8.3220F0F0
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: 7bit

Hi Yakov,

Try this minor variation which is attached with this mail. It should work
better.

Volumizer does not do a deep copy of pointers passed to it, i.e. it assumes
that the pointers are valid pointers and simply stores the addresses
internally. This is done to facilitate management of large data sets by
preventing unnecessary copies of the data set in memory as well as saving
cycles spent on moiving data around. Passing pointers to local arrays to
Volumizer is not a very good idea in general!

In this case, I simply made the arrays static to get the app to work but in
general, you should use vzMemory::malloc() and vzMemory::free to allocate
and free pointers passed to Volumizer (see man vzMemory).

Cheers,
Praveen

----- Original Message -----
From: "Yakov Mindelis" <jack@aerodyne.technion.ac.il>
To: <info-volumizer@els.sgi.com>
Sent: Thursday, October 02, 2003 2:07 AM
Subject: [info-volumizer] Problem with structured grid


> Hi all,
>
>
> I'm trying to use volumizer2 with structured hexahedral mesh. As trial I
> modified the /usr/share/Volumizer2/src/app/simplee/pguide/glut.cxx
> (the modified file is attached) and I can't get nothing to be drawn:-(
>
> I try to use structured hexahedral mesh of one cube 1.0x1.0x1.0, simple
> luts (rgba or intensity).
>
> I think that lut is initialized ok, vertex coords are the only suspect
> here.
>
> Any ideas?
> Thanks in advance,
> Jack.
>

------=_NextPart_000_0093_01C389C8.3220F0F0
Content-Type: application/octet-stream;
	name="myexample.c"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
	filename="myexample.c"

// C / C++
#include <stdio.h>
#include <stdlib.h>
#include <iostream.h>

// OpenGL / GLUT
#include <GL/gl.h>
#include <GL/glut.h>

// IFL
#include <loaders/IFLLoader.h>

// Volumizer2
#include <Volumizer2/Version.h>
#include <Volumizer2/Shape.h>
#include <Volumizer2/Geometry.h>
#include <Volumizer2/VertexArray.h>
#include <Volumizer2/StructuredHexaMesh.h>
#include <Volumizer2/Appearance.h>
#include <Volumizer2/ParameterVertexData.h>
#include <Volumizer2/ParameterLookupTable.h>
// Projected tetrahedra Render Action...
#include <Volumizer2/PTRenderAction.h>
#include <Volumizer2/PTLUTShader.h>
// Global variables
vzShape *shape =3D NULL;
vzPTRenderAction *renderAction =3D NULL;
GLint viewport[4];
int lastPosition[2] =3D {0, 0};
float angles[2] =3D {0, 0}, lastAngles[2] =3D {0, 0};

//////////////////////// Volumizer //////////////////////////////

//  Load the volume data and initialize the shape node.
void loadVolumeData(char *fileName)
{
    // Print the volumizer version string
    cerr<<vzGetVersionString()<<endl;

//     // Create a data loader
//     //    IFLLoader *loader =3D IFLLoader::open(fileName);
//     if (loader =3D=3D NULL) {
//         cerr<<"Error: couldn't open file "<<fileName<<endl;
//         exit(0);=20
//     }=20


    // Load the volume data=20
//     vzParameterVolumeTexture *volume =3D loader->loadVolume();=20
//     if (volume =3D=3D NULL) {
//       cerr<<"Error:couldn't read volume data"<<endl;
//         delete loader;
//         exit(0);
//     }
   =20

    const int dim[3] =3D {2,2,2};
    //data
    static float data[8] =3D {2.0,
		     2.0,
		     2.0,
		     2.0,
		     1.0,=20
		     1.0,=20
		     1.0,=20
		     1.0};

    //luts
    static float lutdatargba[16] =3D {0.5, 0.5, 0.5, 1.0,
			     0.5, 0.5, 0.5, 1.0,
			     0.5, 0.5, 0.5, 1.0,
			     0.5, 0.5, 0.5, 1.0};
    static float lutdataintensity[2] =3D {0.5, 1.0};
    //coords
    static float xyz[24] =3D {0.0, 0.0, 0.0,=20
		     1.0, 0.0, 0.0,
		     0.0, 1.0, 0.0,
		     1.0, 1.0, 0.0,
		     0.0, 0.0, 1.0,=20
		     1.0, 0.0, 1.0,
		     0.0, 1.0, 1.0,
		     1.0, 1.0, 1.0};
   =20
    //coords in reverse
    static float xyzr[24] =3D {0.0, 0.0, 0.0,=20
		     0.0, 0.0, 1.0,=20
		     0.0, 1.0, 0.0,
		     0.0, 1.0, 1.0,
		     1.0, 0.0, 0.0,
		     1.0, 0.0, 1.0,
		     1.0, 1.0, 0.0,
		     1.0, 1.0, 1.0};
   =20

      vzVertexArray *vertexArray =3D new vzVertexArray(8, &xyz[0]);

      float bbox[6];
    // Initialize geometry
    vzGeometry *geometry =3D  new vzStructuredHexaMesh(dim, =
vertexArray);
    vertexArray->computeBoundingBox (bbox);
    printf("bbox:\n%f %f %f, %f %f %f\n",=20
	   bbox[0], bbox[1], bbox[2], bbox[3], bbox[4], bbox[5]);
    vzParameterVertexData  *volume =3D=20
      new vzParameterVertexData ( 8, 1, &data[0]);
    float datarange[2];
    volume->getDataRange(0,datarange);
    printf("datarange:\n%f, %f\n", datarange[0], datarange[1]);
    //    vzParameterLookupTable *lut =3D new vzParameterLookupTable(4, =
&lutdatargba[0], VZ_FLOAT , VZ_RGBA);
    vzParameterLookupTable *lut =3D new vzParameterLookupTable(2, =
&lutdataintensity[0], VZ_FLOAT , VZ_LUMINANCE);
    // Initialize appearance
    vzPTLUTShader *shader =3D new vzPTLUTShader();
    vzAppearance *appearance =3D new vzAppearance(shader);
    shader->unref();
    appearance->setParameter("vertex_data", volume);
    appearance->setParameter("lookup_table", lut);
    volume->unref();
    lut->unref();

    // Initialize shape node
    shape =3D new vzShape(geometry, appearance);
    geometry->unref();
    appearance->unref();

    // Initialize the render action
    renderAction =3D new vzPTRenderAction();
    renderAction->manage(shape);
    }

// Draw the volume data
void renderVolumeData()
{

  glColor3f( 1.0, 1.0, 0.0 );
 =20
  // Do the Volumizer rendering here...
  renderAction->beginDraw(0);

  renderAction->draw(shape);
  renderAction->endDraw();



 =20
 //  // Do the Volumizer rendering here...
//   glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
//     // Begin drawing
//     renderAction->beginDraw(0);
//     renderAction->drawCells(shape, false);
//     renderAction->drawBoundary(shape, false);
//     renderAction->endDraw();
//   glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
}

// Clean up the shape node and the render action
void cleanup()
{
    // Delete the render action and unref() the shape node
    renderAction->unmanage(shape);
    delete renderAction;
    shape->unref();

}

/////////////////////// GLUT callback functions///////////////////

// glutDisplayFunc() callback function
void display()
{
    glClear(GL_COLOR_BUFFER_BIT);
    glDisable(GL_DEPTH_TEST);

    // Viewport
    glViewport(viewport[0], viewport[1], viewport[2], viewport[3]);

    // Projection matrix
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(-1, 1, -1, 1, -1, 1);

    // Modelview matrix
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glRotated( 90 + angles[1], 1, 0, 0);
    glRotated(180 + angles[0], 0, 0, 1);
//    glScalef(1.5, 1.5, 1.5);
    glTranslatef(- 0.5, - 0.5, - 0.5);

    // Enable back-to-front alpha blending
    glEnable(GL_BLEND);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

    // Render the volume data
    renderVolumeData();
    glutSwapBuffers();
}

// glutKeyboardFunc() callback function
void keyboard(unsigned char key, int x, int y)
{
    switch (key) {
        case 27:
            cleanup();
            exit(0);
    }
}

// glutReshapeFunc() callback function
void reshape(int width, int height)
{

    // Update viewport
    viewport[0] =3D 0;     viewport[1] =3D 0;
    viewport[2] =3D width; viewport[3] =3D height;
    glutPostRedisplay();
}

// glutMouseFunc() callback function
void mouse(int button, int state, int x, int y)
{
    if (state =3D=3D GLUT_DOWN) {
        lastPosition[0] =3D x;
        lastPosition[1] =3D y;
        lastAngles[0] =3D angles[0];
        lastAngles[1] =3D angles[1];
    }
}

// glutMotionFunc() callback function
void motion(int x, int y)
{
    angles[0] =3D lastAngles[0] + (lastPosition[0] - x) / 4.0;
    angles[1] =3D lastAngles[1] + (y - lastPosition[1]) / 4.0;
    glutPostRedisplay();
}

// main
int main(int argc, char *argv[])
{
  if(argc >1) {
    cerr<<"Usage: "<<argv[0]<<endl;
    exit(0);
  }
    glutInit(&argc, argv);
    loadVolumeData(argv[1]);

    // Initialize window
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);
    glutCreateWindow("Simple Volume Viewer");

    // Initialize callbacks
    glutDisplayFunc(display);
    glutReshapeFunc(reshape);
    glutKeyboardFunc(keyboard);
    glutMouseFunc(mouse);
    glutMotionFunc(motion);
    glutMainLoop();
}

------=_NextPart_000_0093_01C389C8.3220F0F0--


From info-volumizer-owner@els.sgi.com Sun Oct  5 12:47:09 2003
Received: (from majordom@localhost)
	by els.sgi.com (8.12.10/8.12.2/els-2.2) id h95Jkc0c5648282;
	Sun, 5 Oct 2003 12:46:38 -0700 (PDT)
Received: from aerodyne.technion.ac.il (aerodyne.technion.ac.il [132.68.147.2])
	by els.sgi.com (8.12.10/8.12.2/els-2.2) with ESMTP id h94LSLgJ5620480
	for <info-volumizer@els.sgi.com>; Sat, 4 Oct 2003 14:28:22 -0700 (PDT)
Received: from [132.68.147.9] ([132.68.147.9])
	by aerodyne.technion.ac.il (8.12.9/8.12.8) with ESMTP id h94LQ2m0116340
	for <info-volumizer@els.sgi.com>; Sat, 4 Oct 2003 23:26:02 +0200
Date: Sat, 4 Oct 2003 23:24:25 +0200 (IST)
From: Yakov Mindelis <jack@aerodyne.technion.ac.il>
X-X-Sender: jack@aeone.technion.ac.il
To: info-volumizer@els.sgi.com
Subject: Re: [info-volumizer] Problem with structured grid 
In-Reply-To: <009a01c3899a$1e5483d0$4a5a0e86@praveenlaptop>
Message-ID: <Pine.LNX.4.44.0310042320460.26468-100000@aeone.technion.ac.il>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
Sender: owner-info-volumizer@els.sgi.com
Precedence: bulk
Reply-To: info-volumizer@els.sgi.com

On Fri, 3 Oct 2003, Praveen Bhaniramka wrote:

> Try this minor variation which is attached with this mail. It should work
> better.

Thanks, it helped... 


> Volumizer does not do a deep copy of pointers passed to it, i.e. it assumes
> that the pointers are valid pointers and simply stores the addresses
> internally. This is done to facilitate management of large data sets by
> preventing unnecessary copies of the data set in memory as well as saving
> cycles spent on moiving data around. Passing pointers to local arrays to
> Volumizer is not a very good idea in general!

Oook, when arrays used inside classes as members, it'll should work as 
is...

10X,
Jack.


From info-volumizer-owner@els.sgi.com Sun Oct  5 12:47:07 2003
Received: (from majordom@localhost)
	by els.sgi.com (8.12.10/8.12.2/els-2.2) id h95JjfUH5637589;
	Sun, 5 Oct 2003 12:45:41 -0700 (PDT)
Received: from aerodyne.technion.ac.il (aerodyne.technion.ac.il [132.68.147.2])
	by els.sgi.com (8.12.10/8.12.2/els-2.2) with ESMTP id h9593pgJ5659683
	for <info-volumizer@els.sgi.com>; Sun, 5 Oct 2003 02:03:52 -0700 (PDT)
Received: from [132.68.147.9] ([132.68.147.9])
	by aerodyne.technion.ac.il (8.12.9/8.12.8) with ESMTP id h9591Vm0067492
	for <info-volumizer@els.sgi.com>; Sun, 5 Oct 2003 11:01:31 +0200
Date: Sun, 5 Oct 2003 10:59:32 +0200 (IST)
From: Yakov Mindelis <jack@aerodyne.technion.ac.il>
X-X-Sender: jack@aeone.technion.ac.il
To: info-volumizer@els.sgi.com
Subject: [info-volumizer] vzParameterVolumeTexture with vzStructuredHexaMesh?
Message-ID: <Pine.LNX.4.44.0310051054100.2920-100000@aeone.technion.ac.il>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
Sender: owner-info-volumizer@els.sgi.com
Precedence: bulk
Reply-To: info-volumizer@els.sgi.com

Hi,

Is it possible to use vzTMShader with vzStructuredHexaMesh? If yes how 
does the LUT finction in this case. 

BTW: the purpose of this is to create array of hexahedral shapes sith 
their own vertex data defined by apropriate array of 
vzParameterVolumeTexture-s



Thanks in advance,
Jack.


From info-volumizer-owner@els.sgi.com Sun Oct  5 12:47:34 2003
Received: (from majordom@localhost)
	by els.sgi.com (8.12.10/8.12.2/els-2.2) id h95JjfwW5692639;
	Sun, 5 Oct 2003 12:45:41 -0700 (PDT)
Received: from aerodyne.technion.ac.il (aerodyne.technion.ac.il [132.68.147.2])
	by els.sgi.com (8.12.10/8.12.2/els-2.2) with ESMTP id h94LYIgJ5645658
	for <info-volumizer@els.sgi.com>; Sat, 4 Oct 2003 14:34:19 -0700 (PDT)
Received: from [132.68.147.9] ([132.68.147.9])
	by aerodyne.technion.ac.il (8.12.9/8.12.8) with ESMTP id h94LW0m0080010
	for <info-volumizer@els.sgi.com>; Sat, 4 Oct 2003 23:32:00 +0200
Date: Sat, 4 Oct 2003 23:30:23 +0200 (IST)
From: Yakov Mindelis <jack@aerodyne.technion.ac.il>
X-X-Sender: jack@aeone.technion.ac.il
To: info-volumizer@els.sgi.com
Subject: [info-volumizer] volumizer2 and rgba problems (fwd)
Message-ID: <Pine.LNX.4.44.0310042329050.26468-100001@aeone.technion.ac.il>
MIME-Version: 1.0
Content-Type: MULTIPART/Mixed; BOUNDARY="118079656-729462469-1065297112=:26468"
Content-ID: <Pine.LNX.4.44.0310042329051.26468@aeone.technion.ac.il>
Sender: owner-info-volumizer@els.sgi.com
Precedence: bulk
Reply-To: info-volumizer@els.sgi.com

  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

--118079656-729462469-1065297112=:26468
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
Content-ID: <Pine.LNX.4.44.0310042329052.26468@aeone.technion.ac.il>

I tried t create LUT so I could pass the rgb and alpha values separately 
and got the following results:

1 LUT creation ("value" and "detailed value" are number of entry in LUT), 
rgba values are floats (0.0->1.0) :
512 entries -> 101 spectrums > alpha intervals of 0.01

spectrum 1 (0-4)

RGB A value detailed_value
001 0 0     0(alpha=0)+rgb(normalized to range[0-4])
011 0 1
010 0 2
110 0 3
100 0 4

spectrum 2 (5-9)
RGB A value detailed_value
001 0.01  5 5(alpha=0.01)+rgb
011 0.01  6
010 0.01  7
110 0.01  8
100 0.01  9

spectrum 100(495-499)
RGB A value detailed_value
001 0.99 495 495(alpha=0.99)+rgb
011 0.99 496 
010 0.99 497
110 0.99 498
100 0.99 499

not used:
rgba value
0000 500
|
v
0000 506 

spectrum 101 - last one (507-511)
RGB A value detailed_value
001 1 507 507(alpha=100)+rgb
011 1 508
010 1 509
110 1 510
100 1 511

where spectrum is(float rgb values):

r 	g 	b
0	0	1//region1 blue->cyan
0	1	1//region2 cyan->green
0	1	0//region3 gren->yellow
1	1	0//region4 yellow->red
1	0	0


Then I created cube with coords:
    float xyz[24] = {0.0, 0.0, 0.0, 
		     1.0, 0.0, 0.0,
		     0.0, 1.0, 0.0,
		     1.0, 1.0, 0.0,
		     0.0, 0.0, 1.0, 
		     1.0, 0.0, 1.0,
		     0.0, 1.0, 1.0,
		     1.0, 1.0, 1.0};

and vertex data:
    float data[8];
    data[0] = rgba2lutvalue(0.0, 0);//0 - blue
    data[1] = rgba2lutvalue(1.0, 0);//red
    data[2] = rgba2lutvalue(1.0, alpha);//red
    data[3] = rgba2lutvalue(0.0, 0);//blue
    data[4] = rgba2lutvalue(1.0, 0);
    data[5] = rgba2lutvalue(1.0, 0);
    data[6] = rgba2lutvalue(1.0, 0);
    data[7] = rgba2lutvalue(1.0, 1.0);//511

where alpha=0, 0.01, 0.02

where rgba2lutvalue(rgb, alpha) takes float rgba values and returns the 
correspinding entry in LUT. rgb=0 - blue, 
rgb=1.0 - red, 0<rgb<1 - corresponds to color between firs(blue) and 
last(red). Volumizer interpolate these values inside of the LUT and gets 
the coressponding interpolated values of rgba.

As you can see MIN(data)=0, MAX(data)=511. data[0:3] describe the upper 
face of cube. In attached image, on the left there is upper face with 
correct passage of colors through the spectrum. In the middle image one of 
the corners of upper face has alpha=0.01, so the passage contains one 
additional spectrum, and the image on the right contains two additional 
spectrums. 

Conclusion: 
volumizer interpolates the LUT values passed to the 
vertices instead of their corresponding  rgba values taken from lut!

that means if I have several cubes to draw I can not change alpha inside 
cube more than the resoluton of alpha used in LUT (0.01 in this example)

Any ideas?
Jack.


--118079656-729462469-1065297112=:26468
Content-Type: IMAGE/JPEG; NAME="alpha0.jpg"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.44.0310042151520.26468@aeone.technion.ac.il>
Content-Description: 
Content-Disposition: ATTACHMENT; FILENAME="alpha0.jpg"

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
UXoKsiCTyF741nii9BOQvfGs8UXoKsiCTyF741nii9BTKzQWhrpJpJbhXh8x
YXlpjGdQODf5nQ4r1KJgPFfxaWz3Tufyovu1+j+DS2NcXC53PJaWHsot2Qf+
X0tHiXtEV1pHiv4tLZ7p3P5UX3afxaWz3Tufyovu17VE1pHiv4tLZ7p3P5UX
3aL2qJrSJWk/sTvPUZ/NuSy+q3Xrz/IYmk/sTvPUZ/NuSy+q3Xrz/IYoKqIi
AiIgLyGmMcl8nh0fikDKYGGevcYo5OwdKGRM1ZGOacuD35wccBgjDwV6qpqI
6WmlqJnasUbC9xwTgAZOwKEIJKCz8aqWhlZW19PNUAuHYudLGwMyHAHVYGMy
O21c4cSQdRuiZlmZ32fJrNodWR3m70N8pG1DKB7Q42+wW+OVsbnP1Jwx0DxL
E5jM9g4yNeHM4N29fRdGNG9A7tY4am20dlvMPPVmhptck9lqvDI2hrgHDsdU
EbMjK9UbVQuvLLwaaPlBlO6lFQNjuCc4OLD0jWaCM7tuMZOZd10OtdzuIukX
D227jH/Ebe/gpnAFh1X7C2Vv4to1ZGuGNwCmtObTl+Bejse2ktUNA/nltxNJ
IR7UviLXFu44JxkA42Bfv4JW0f8A1F4+mav71YLbpFeoaikgu9rjrKSse0Ut
4suZqd7Xl5YZI8l8Q1QzsgXsy/a8BegrLtbbfUUtPW3Ckpp6t+pTxzTNY6Z2
QMMBOXHLgMDpHStbSvMswjRW3D+nu30tVfeLkNGqAbprn8d0qfvFsuV2ttmp
21F0uFJQwOeGNkqpmxNLsE4BcQM4BOO8VsTaV5s6tOSUNHqEf0tx+O41Hprk
LDRD+krv0+f01TWOO7W2a6TWuK4Uj7hCzXlpGzNMrG7NrmZyB2TdpHOOlTXq
zTZ0ZOrkyaPsYLnVxRczCWvx/wBT2lx+MrkKGrH/AN0qD4WR+iucl2tsV0it
ctwpGXCZmvFSOmaJXt27WszkjsXbQOY9C2JrSzsafv5yw8TqvdGf5LPRTidX
7pT/ACWeityJrSmwpznzlg4lV+6c/wAiP0U4nWt2tuUhPMJI2lvx4AP+a3op
ddjT9/OU/i90/r1P+jn01+cXuv8AX6f9Gd6aooszTBsafv5yncWu39fpv0Z3
ppxa7f1+m/RnemqKLOzj5Mrsqfv5yntp7oO2rqc+CnPprlrXGLZqQVH97WMf
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
9B3Hc4MypIiKgiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiII95Gbto/wB6
uf8AZp1YUm7DN0sferHeYmVZbqwj5zYpxkWC8esWdYg861b1gvHrFnWIPOtX
DS8EutHFDeNwRBuCLpDIvm959k+kv5iqvqYvpC+b3n2T6S/mKq+pisYSPZ2X
1W69ed5DFVUqy+q3XrzvIYqqgKfB3erOrw+VIqCnwd3qzq8PlSLnXxU9ezVO
EqCIi6MnMsFoY2Oie1owDUzu3HeZXk79u8+Do2YW9TbHHwVvkbqgZq6l2AMb
53noHT/8neYnNSREVUREQEREBERAREQEREBERAREQEREBERAREQFKtQxdL33
6xp/2IlVUy2jFyvHfqmn/ZjWqcJc68aevZTREWXR+O7U+BYbJ3Fo/gm/UFud
2p8CxWbZZ6T4Jv1BLc3Kfqx0ns3IiI6vm9z/ACgzeCm+10y9no53Ei+El845
eMuf5QZvBTfa6Zez0c7iRfCS+ccrOIqqfP3eo+rzeVGqCnz93qPq83lRrlpe
H8x+2qMVBERdGRERAU6ytc2gkDiSeNVJ2nOwzPI5zzf/AMG4UTuU+zPMlBI4
jBFVUN3dEzx7UdHR8bt5lt90vvsoIiKqIiICIiAiIgIiICIiAiIgIiICIiAi
IgHcpGioxolZx0UUI/0BVzuKlaNDGi9qHRSRD/QFqOGWJ44VURFlsREQQ74M
3rRvvXB/2WdXFEvXdnR3vVzz/wCmmVtWZu3VG6BERRhK0n9id56jP5tyWX1W
69ef5DE0n9id56jP5tyWX1W69ef5DEFVERBPr/X9s6w7zUioKfX+v7Z1h3mp
FQXOjiq69mqsIFnrYTUQNYIxJiWN+DK6PtXg5yATsxnG44wcAkrQi6MiIiAi
IgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiIJdzGbnZu9VOP+zKqim3EZuVq7
1Q4/7UipLVWEOdHFV17QLBePWLOsQedat6wXj1izrEHnWrjpeCXajihvG4Ig
3BF0hkXze8+yfSX8xVX1MX0hfN7z7J9JfzFVfUxWMJHs7L6rdevO8hiqqVZf
Vbr153kMVVQFPg7vVnV4fKkVBT4O71Z1eHypFzr4qevZqnCVBERdGRT7LLwt
BI7Zsqqluw9Ezx7Y9HT8TdwoLHbYhDSvYHufmeZ2XMc09lI44w7bjbjO47xs
IU5pzbERFVEREBERAREQEREBERAREQEREBERAREQEREBTreMXG6d+ob5pior
BRDFfce/M3zbFqnCXLScVPXtLeiIsur8d2p8Cx2fuRS/BN+pbD2p8Cx2jbaK
X4Jv1LXJxn6sdJ7NqIiy7Pm9z/KDN4Kb7XTL2ejncSL4SXzjl4y5/lBm8FN9
rpl7PRzuJF8JL5xys4iqp8/d6j6vN5UaoKfP3eo+rzeVGuWl4fzH7aoxUERF
0ZEREBYLPE2Gikax8TwaqodmJwcMmZ5I2AbQTgjmIIyd53rrhmbOwvYHgBzm
dmwsOWkg7CBsyNh3EYIyCCg7EREBERAREQEREBERAREQEREBERAREQEREH4d
xU7R4Y0dto6KaMf6QqJ3FYLEMWKhHRAwf6QtRwy5T9SOk9lBERZdRERBJurN
a62R3tatx/2JR+tVlhrWa1bbne1nJ/23j9a3LFE3mr5ybqndAiItsJWk/sTv
PUZ/NuSy+q3Xrz/IYmk/sTvPUZ/NuSy+q3Xrz/IYgqoiIJ9f6/tnWHeakVBT
6/1/bOsO81IqC50cVXXs1VhAuir4qYW8cERi4RmOFxjX1xqYzz62rjnzjG1d
665oWzsDHl4Ac1/YPLDlpBG0EHGRtG4jIOQSF0ZdiIiAiIgIiICIiAiIgIiI
CIiAiIgIiICIiAiIgIiIJ9cM3C296Zx/23qgsNZ6/oPhT5DluWqsIctHxVde
0CwXj1izrEHnWresF49Ys6xB51q46Xgl3o4obxuCINwRdIZF83vPsn0l/MVV
9TF9IXze8+yfSX8xVX1MVjCR7Oy+q3XrzvIYqqlWX1W69ed5DFVUBT4O71Z1
eHypFQU+Du9WdXh8qRc6+Knr2apwlQREXRkXCJ7pGFzonxEOcNVxGSASAdhO
w7xz4O3B2LmuMbXMbhzy85JycdO7Z0bkHJERAREQEREBERAREQEREBERAREQ
EREBERAREQFho/X9f8KPIatyw0Xr+4fCjyGrUYS46Tio69pbkRFl2fh3FYLI
dax0TumBh/0hbzuKm6PHW0ctp6aaM/6QtRwy5TH/AKR0nspoiLLq+b3P8oM3
gpvtdMvZ6OdxIvhJfOOXjLn+UGbwU32umXs9HO4kXwkvnHKziKqnz93qPq83
lRqgp8/d6j6vN5Ua5aXh/MftqjFQREXRkREQFwiEjWESva52scFrdUYzsG87
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
N0xEbS1vCTPeSCcnJcSSdm85I5loVURZ6qnlnLOCrJqfV38EGHW2jfrNPRjZ
0nvY5wRSRMa19RJMQxrS54aC4je44AGTz42dACg7UWKpoqicuMd0qqfLiQIm
xHALdXA1mHYD2XhPONi4voKp52XarZtz2LIunONrD4PB39qTKX3t6zwD+UVH
+MeSF0R2+qZHquvFbIcds5kOdzRzRgb2k+Fx5sAdDKO4MnlMF0c45w4VMDXt
OwkEamoQclo3karcYyS5ctJx0de0ryVkU98N2LwY66jazO0OpHE4yOfhBzZ8
Y6MH9EN34EA11EZcdsKN+rnVG3HC7s5O/cQObJ63RuO4qbo63V0bto34pox/
pC6Zn3eB4YayimlkzwUTaR7T/O2k8IcAZZk45jzuAFGgpeJUFPS62twMbWa2
MZwMbli969zcT/ne0IiLoy+b3P8AKDN4Kb7XTL2ejncSL4SXzjl4y5/lBm8F
N9rpl7PRzuJF8JL5xys4iqp8/d6j6vN5UaoKfP3eo+rzeVGuWl4fzH7aoxUE
RF0ZERZXslqZ9V3CQwxP2jIHDbGkEEHIaCSCCASR7Xtg1IiIOmakp6hkzJoI
5WTM4OVr2hwezb2JB3jadh6Su5EQEREBT+T6rhXv5XrC1xJDCyHDc62wfi87
NYbye0bnPZa1BESYumy22sk7W918W3+YyDvdMZ6D8o97FJEUiLK6WRysZCzh
zJqAB75GjWfs37MAHODuxv2dCdlS4s4CaKMAjW14y/I1hnGHDHY6w58Eg7cY
PciWSzg8SF8ZY9oaD2YLc5GDu27NuOn9Y/IxKHymR7HNLsxhrCC1uBsJycnO
TnZsIGNmT2IqrFLLcmhvA0lK8lztbXqXNwNbsSOwOSW5JHMdmTvXXFNeHD8d
QULNn8yse72vTEOl/iHSdWiilksmyz3oa3BW+gfsONate3J24/oj/d8Z6NvN
9fVNYXC01jyM4a18WTtI53gbtvgPTsW9ELb3RTTyz8LwlLLT6kjmN4UsOuAd
jxquOw82cHpAXOCR0tPHI+F8L3tDjFIQXMJHanVJGRu2EjvldiKqxcpMYWNm
p6qOR+p2PAOfqlxwASwFuw7znA3nZgrnFcIZbbx9rKkQ6hk1XU0jZcD/AMst
187N2MnmC1IojDUXWmp9cPjrDq5zwdHK/cCdmq053fV0hZ6C60baWKOR74S0
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
w9UqWwn2s4MTj38Owcd9NrRmalWTeiwcuWr3Rpfnm/tTly1e6NL8839qbWjM
1Ksm9Fnpq6krNbi1TFNq41uDeHYz04WjI6VuKomLwkxMYiJkdKZHSrdA7llt
pzbKY9MTfqC0kjG9R7fVTSWykgo2MfIIWcI95OrHloxu3nbnV2bN5GRnhXMR
pIn7T2biLxLfU1LxIKemAdUOGdvaxt9s79Q3nHMASOVNSCn1nOkfLM/GvK/G
s7G4bAAAOgDpO8lcqamZTRloJc5x1nvd2z3dJ/72AADAAXcukU3m8pM8oERF
tkREQEREErSf2J3nqM/m3JZfVbr15/kMTSf2J3nqM/m3JZfVbr15/kMQVURE
BMDoREDA6EwOhESwYHQvL0Ojd0raOOPSu78o8Hlhp6RnF4J2gkNfK0dk9zm5
12E8F2WNQ41j6hEsGB0JgdCIlh+YHQsT7PbZJHSPoKZz3HLnGJpJPTuW5Fma
aZxhYmYwYOQ7V7nUvzLf2JyHavc6l+Zb+xb0WdlRkuvVmwch2r3OpfmW/sTk
O1e51L8y39i3omyoyNerNg5Ftw9Tpmwn20BMTj3stwcd5OR6X29X+ly+kt6J
sqMjXqzYOR6X29X+ly+knI9L7er/AEuX0lvRNlRka9WbByPS+3q/0uX0k5Hp
fb1f6XL6S3omyoyNerNP5NmZ2MFyq4oxuZlj8fG9pcfjKcQq/dar+RF6CoIm
yp+Sa8p/EKv3Wq/kRegnEKv3Wq/kRegqCJsqfv5ya8p/EKv3Wq/kRegnEawb
W3WoJG4PjjLT4QGg48BHhVBE2VP385NeU/gLr/XqT9Fd94nAXX+vUn6K77xU
ETZU/fzk15SpLZVVc9M6tqoJYoJRKGRwuYS4A42653E5+JVURWnR003tzKqp
nEREW2RERAXze8+yfSX8xVX1MX0hfM7rwzdK9KI5tXWFjqXMLRgOYQzGzJ2j
aO/q5wMgKxgPb2X1W69ed5DFVUqy+q3XrzvIYqqgIiICIiAiIgIiICIiAiIg
IiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIg+b3P8oM3gpvtdMvZ6Odx
IvhJfOOXiLhwrf4RamOfV1hxZzHNGA5hq6bGzJ2jaO/q5wMgL2+jncSL4SXz
jlZxFVERQEREBERAREQEREBERAREQEREBERAwmB0IiWDA6EwOhESwYHQmB0I
iWGepoaSs1eM00U2rnV4RgdjPRldHIdq9zqX5lv7FvRYnR0TN5hqKqowlg5D
tXudS/Mt/YnItA31KDgOni73RZ8OqRn41vRTZUZGvVmwcj0vt6v9Ll9JaaWl
ho6dlPTxiOJgw1oXcisaOmmbxBNVUxaZERFtkREQEREBERB01VJTV1M+mrKe
Kop3414pmB7Xbc7Qdh2rOLNaxRx0gttIKaNz3MhEDdRheHBxAxgEh7wenWd0
lEQdzaCjZwWrSQN4KV88eIwNSR+trPHQ4678nedZ3SV3BjQ8vDRrOABPOQP/
AOlEQcYIIqaCOCCJkUMTQyONjQ1rWgYAAG4Acyx1Vis9dKZau1UNRIXF5dLT
seS4tDCckby1rW56ABuCIg7H2i2yUMVC+30jqSFpZHA6FpjY0sLCA3GANVzm
46CRuK4Mslqjq4qtlso21MQxHMIGh7Bgt2OxkbCR4CQiIWcW6P2ZsE8LbTQi
KoDWzM4uzEobtaHDG3GTjO5booo4IWRQxtjiY0NYxgwGgbgBzBEQc0REBERA
REQdNVS09bTvp6qCKeB+NaOVgc04ORkHZvAXYxjY2NYxoa1owGgYACIg5IiI
CIiAiIgIiICIiAiIgIiICIiAiIgIiICnX2ikuNkqqSGKCWSVmq0TnDAc9tuO
1vbDZvA2jeCJCVYJr7Rc5KYU76rMRmLjqVMkThHzNBZgjGzn/YszdHK9ohPG
5yYzIw5ulVtjdr7+y2u7M4J2jAwexbgik8/mZTy+ZPI6YaTXzRG8W+vuFdJU
Qyl8ZoqdwZGzL3Fp1tUF2WMGQR2Ls4JDtly1V99v0Uxgjha2lrW62vXysL2P
hZM3tWczZWDG7IPQCSLU76Y+ZlM/4ifmMPM1mld0g0ortHKV8sN3oZmObUPq
5JoCJ3MjjBacZ7KojzkENALhrFoa7fabba6W8VtiuEhuFypquWvqal9BGxkj
3cE92Brk/wD1LceB3eyRZrnH890id0fj9Q20lfaaE2t9Iaqndc2x1bDFCG5j
lmja1j8P5n1gdjaNrzv37b/oK26Rytud+upoppGtdDTzPGXOdqtyHuczVGsD
jV3tB7xIpGf37y1ys1xfwYaJMhLH210rnRhkkj6iQGTA3kBwAPgAXOo/g+0c
eHxxWtrRUN4KZ/GZAWsDTgtGSCc42bN5O3GCRajEjFoGguj+tUF1G5zaiNsc
jTK4AgdGCMbytT9E7G8VAdQgiojEUv4x/ZNG4b9m/mRFEdb7HbKySthjp2ta
7Vp6oPLzwjQzLQ0hw1ca428+0d9DohZ56Wrp62mNWysjjhnE80sgeyNxdGOz
e7GqXE5HOSURSlZxYKj+DHQypdK59gpmmUAO4NzmDZuwGkY+Jd9PoLo7CYmm
w28tgcAx+qC6Roj1cvGqA7eexORnDu23EVTm9BTBzYGtfFHFqktayN2WhoOG
8w5sbMbN23euueAvmjcYYpwHlwMpAMXYFvY9ic53HPM47eZERZxd0DODi1eC
jj7Jx1Yzs2knO4bTvPfK7NpGxESUhHNfTMlmjl4y6WOtigeWvcGmRzIyCBrb
GYc3I3ZzsOcmpwb+MGThn6mqG8FgaoPTuzn48bNyIqcnVVwmZ0AbGwua8kSn
GtD2DhrMy0gu24242OPgODSG11dzsFfR0slPJUTQ6kTa2Jr4g7mJGqfDtDgD
g6pxgkVWcGWmt82jmjzn113q6ynoaR+vFFBDA0sa3cxrGtLcAYADguytvLrZ
YqeqoaTjETWsLm1FS5rhHuzrYeXOzjYd+SdbpIiRxRCVc9M6kNLrZHE3gY3y
ytqYy7WDQXnVLXDB1WPG0Ha5p5iDxt9XpTpVSUtfS19HabZOTLG6GPhagswQ
0OD2lgzsJxuxgEoixzayfsFXTUelMtouNyvFfchQwSSSF4igwXSDWYxhbquJ
znYdjWbcjK1RaVC2QNprhQujlhhbkQ1JqBnJAGu8Nc7YAS4jOSejJIt2Zp5o
E38I9dR3Ka1yU9PUVZY0wvbG6KPJjLjrDXccdi7YOkDbvWWStvNJoib1pRcB
dNH52xTGl4GIzubI6NsbHYYxuAX65I2ggAZAJJFymZ+fhqrdO75uWbXeJqq2
W9kDnRWasoyyNrnE1EZ2BoD2luBq525LgQNp3rBZIrpcrtV22mu9Y+lpIWE1
M9Q9ssTn64bqNBIeexyXSFwyB2O/JFv/AKmOW/uRG6W6S01ejujzmXS73Kti
402MTx1sjZtWWRjGgk5yQ52cgtwNgGzb5a4XWzPpI71f6KOWvL3RCrpKCPWl
GrGS5zXu2OBaGg5ccN3gOLQRSqb3+ZkYvb23Rq523R+noqSeko6qJkYM8Ze/
WcI2sJeMtD8BuqMgbA3AbgAea0rp7donUw3WWiM1yJNXJUyPE7jGJYIXg5a0
uIbM3VBIAxv2DJFec/M0+yvYbPYdKKOsklilqqWRrWTU9TExjNaWCGUOY1pw
whj2jLcHOsck9kfYT2m21U8s9Rb6WaaWnNLJJJC1znwk5MZJGSwn+buRFYwL
WddTY7TW0jaSqtlHPTMi4FsUsDXNbHlp1QCMAZYw46Wt6AvxlgtDC8ttlGNe
B1ORwLccE7a6PGNjCdpbuJ24REsTF37DZLdTMq2UtPxVtW3VmbTPdEDsI1hq
kar8Htxh2xu3sW46qjRmw1b3PqbJbpnuDml0lKxxIc4vcNo53EuPSSTvKIg7
5rNa6mnignt1JLDEzg445IWuaxmWu1QCNgyxhx0tb0BfvI9syDyfSZFPxUHg
W5EP/L3dpsHY7tiIg7qajpaPheK00UHDSGWTg2Buu873HG8nnO9d6IgIiICI
iAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIg//Z
--118079656-729462469-1065297112=:26468--

From info-volumizer-owner@els.sgi.com Sun Oct  5 23:34:41 2003
Received: (from majordom@localhost)
	by els.sgi.com (8.12.10/8.12.2/els-2.2) id h966XItf5686759;
	Sun, 5 Oct 2003 23:33:18 -0700 (PDT)
Received: from sgindia.newdelhi.sgi.com (newdelhi.sgi.com [134.14.90.2])
	by els.sgi.com (8.12.10/8.12.2/els-2.2) with ESMTP id h966QZgJ5668495
	for <info-volumizer@els.sgi.com>; Sun, 5 Oct 2003 23:26:39 -0700 (PDT)
Received: from praveenlaptop ([134.14.90.74]) by sgindia.newdelhi.sgi.com (980427.SGI.8.8.8/980728.SGI.AUTOCF) via SMTP id KAA97904 for <info-volumizer@els.sgi.com>; Mon, 6 Oct 2003 10:41:24 +0530 (IST)
Message-ID: <008601c38bd3$3dd6e640$4a5a0e86@praveenlaptop>
From: "Praveen Bhaniramka" <praveenb@sgi.com>
To: <info-volumizer@els.sgi.com>
References: <Pine.LNX.4.44.0310051054100.2920-100000@aeone.technion.ac.il>
Subject: Re: [info-volumizer] vzParameterVolumeTexture with vzStructuredHexaMesh?
Date: Mon, 6 Oct 2003 11:59:47 +0530
MIME-Version: 1.0
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2800.1106
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106
Sender: owner-info-volumizer@els.sgi.com
Precedence: bulk
Reply-To: info-volumizer@els.sgi.com

Hi Yakov,

The shader is part of the shape's visual attributes (appearance) while the
geometry provides the spatial attributes. Hence by definition they are
independent of each other. Simply put, any of the shaders should be usable
with any of the geometry types.

In your case however, it is probably more important to decide which
render-action makes sense for your problem. The TMShader is used with
TMRenderAction and hence the rendering will be implemented by slicing the
geometry using viewport aligned slices and rendering this 'proxy geometry'.
The geometry simply provides the region of interest in this case since the
values in the ParameterVolumeTexture are mapped to the geometryROI (a
cuboidal region) using texgen. Hence there is no direct correspondence
between the vertex coordinates in the StructuredHexaMesh and the values in
the ParameterVolumeTexture.

When using the PTRenderAction though, the vertex coordinates of the geometry
correspond to the vertex values in the ParameterVertexData. Hence there is a
direct correspondence between the geometry and the appearance of the shape.

In either of the above cases, the LUT is simply applied as a
post-interpolation lookup used to map the value at the rendered vertex to an
RGBA value.

Cheers,
Praveen

----- Original Message -----
From: "Yakov Mindelis" <jack@aerodyne.technion.ac.il>
To: <info-volumizer@els.sgi.com>
Sent: Sunday, October 05, 2003 2:29 PM
Subject: [info-volumizer] vzParameterVolumeTexture with
vzStructuredHexaMesh?


> Hi,
>
> Is it possible to use vzTMShader with vzStructuredHexaMesh? If yes how
> does the LUT finction in this case.
>
> BTW: the purpose of this is to create array of hexahedral shapes sith
> their own vertex data defined by apropriate array of
> vzParameterVolumeTexture-s
>
>
>
> Thanks in advance,
> Jack.
>


From info-volumizer-owner@els.sgi.com Mon Oct  6 00:11:03 2003
Received: (from majordom@localhost)
	by els.sgi.com (8.12.10/8.12.2/els-2.2) id h967AgC45651230;
	Mon, 6 Oct 2003 00:10:42 -0700 (PDT)
Received: from sgindia.newdelhi.sgi.com (newdelhi.sgi.com [134.14.90.2])
	by els.sgi.com (8.12.10/8.12.2/els-2.2) with ESMTP id h9675CgJ5681530
	for <info-volumizer@els.sgi.com>; Mon, 6 Oct 2003 00:05:15 -0700 (PDT)
Received: from praveenlaptop ([134.14.90.74]) by sgindia.newdelhi.sgi.com (980427.SGI.8.8.8/980728.SGI.AUTOCF) via SMTP id LAA98991 for <info-volumizer@els.sgi.com>; Mon, 6 Oct 2003 11:20:02 +0530 (IST)
Message-ID: <00b001c38bd8$a2abc9f0$4a5a0e86@praveenlaptop>
From: "Praveen Bhaniramka" <praveenb@sgi.com>
To: <info-volumizer@els.sgi.com>
References: <Pine.LNX.4.44.0310042329050.26468-100001@aeone.technion.ac.il>
Subject: Re: [info-volumizer] volumizer2 and rgba problems (fwd)
Date: Mon, 6 Oct 2003 12:38:25 +0530
MIME-Version: 1.0
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2800.1106
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106
Sender: owner-info-volumizer@els.sgi.com
Precedence: bulk
Reply-To: info-volumizer@els.sgi.com

Hi Yakov,

This is very correct. Volumizer uses 'post-interpolation' lookup tables
(LUTs) to specify the per-vertex RGBA values for the rendered geometry.
Essentially, the per-vertex values are interpolated and then mapped to
corresponding RGBA values in the LUT. A side effect of this technique is
that the maximum number of output RGBA values is limited by the resolution
of your LUT.

'Pre-interpolation' lookup tables, where the RGBA values are looked-up and
then interpolated, on the other hand can cause color-bleeding.
Color-bleeding can generate very undesirable results for certain volume
visualization applications. For example in medical, specific RGBA values in
the LUT might be used to identify different regions/meterials in the data
set like soft tissue and bone. Pre-interpolation lookup will cause the
boundaries between the materials to have a different color (interpolated
between the two colors for bone and tissue) while post-interpolation will
generate 'sharper' boundaries.

Hope this helps make things clearer.

Cheers,
Praveen

----- Original Message -----
From: "Yakov Mindelis" <jack@aerodyne.technion.ac.il>
To: <info-volumizer@els.sgi.com>
Sent: Sunday, October 05, 2003 3:00 AM
Subject: [info-volumizer] volumizer2 and rgba problems (fwd)


> I tried t create LUT so I could pass the rgb and alpha values separately
> and got the following results:
>
> 1 LUT creation ("value" and "detailed value" are number of entry in LUT),
> rgba values are floats (0.0->1.0) :
> 512 entries -> 101 spectrums > alpha intervals of 0.01
>
> spectrum 1 (0-4)
>
> RGB A value detailed_value
> 001 0 0     0(alpha=0)+rgb(normalized to range[0-4])
> 011 0 1
> 010 0 2
> 110 0 3
> 100 0 4
>
> spectrum 2 (5-9)
> RGB A value detailed_value
> 001 0.01  5 5(alpha=0.01)+rgb
> 011 0.01  6
> 010 0.01  7
> 110 0.01  8
> 100 0.01  9
>
> spectrum 100(495-499)
> RGB A value detailed_value
> 001 0.99 495 495(alpha=0.99)+rgb
> 011 0.99 496
> 010 0.99 497
> 110 0.99 498
> 100 0.99 499
>
> not used:
> rgba value
> 0000 500
> |
> v
> 0000 506
>
> spectrum 101 - last one (507-511)
> RGB A value detailed_value
> 001 1 507 507(alpha=100)+rgb
> 011 1 508
> 010 1 509
> 110 1 510
> 100 1 511
>
> where spectrum is(float rgb values):
>
> r g b
> 0 0 1//region1 blue->cyan
> 0 1 1//region2 cyan->green
> 0 1 0//region3 gren->yellow
> 1 1 0//region4 yellow->red
> 1 0 0
>
>
> Then I created cube with coords:
>     float xyz[24] = {0.0, 0.0, 0.0,
>      1.0, 0.0, 0.0,
>      0.0, 1.0, 0.0,
>      1.0, 1.0, 0.0,
>      0.0, 0.0, 1.0,
>      1.0, 0.0, 1.0,
>      0.0, 1.0, 1.0,
>      1.0, 1.0, 1.0};
>
> and vertex data:
>     float data[8];
>     data[0] = rgba2lutvalue(0.0, 0);//0 - blue
>     data[1] = rgba2lutvalue(1.0, 0);//red
>     data[2] = rgba2lutvalue(1.0, alpha);//red
>     data[3] = rgba2lutvalue(0.0, 0);//blue
>     data[4] = rgba2lutvalue(1.0, 0);
>     data[5] = rgba2lutvalue(1.0, 0);
>     data[6] = rgba2lutvalue(1.0, 0);
>     data[7] = rgba2lutvalue(1.0, 1.0);//511
>
> where alpha=0, 0.01, 0.02
>
> where rgba2lutvalue(rgb, alpha) takes float rgba values and returns the
> correspinding entry in LUT. rgb=0 - blue,
> rgb=1.0 - red, 0<rgb<1 - corresponds to color between firs(blue) and
> last(red). Volumizer interpolate these values inside of the LUT and gets
> the coressponding interpolated values of rgba.
>
> As you can see MIN(data)=0, MAX(data)=511. data[0:3] describe the upper
> face of cube. In attached image, on the left there is upper face with
> correct passage of colors through the spectrum. In the middle image one of
> the corners of upper face has alpha=0.01, so the passage contains one
> additional spectrum, and the image on the right contains two additional
> spectrums.
>
> Conclusion:
> volumizer interpolates the LUT values passed to the
> vertices instead of their corresponding  rgba values taken from lut!
>
> that means if I have several cubes to draw I can not change alpha inside
> cube more than the resoluton of alpha used in LUT (0.01 in this example)
>
> Any ideas?
> Jack.
>


From info-volumizer-owner@els.sgi.com Mon Oct  6 23:07:49 2003
Received: (from majordom@localhost)
	by els.sgi.com (8.12.10/8.12.2/els-2.2) id h97676Zh5710423;
	Mon, 6 Oct 2003 23:07:06 -0700 (PDT)
Received: from aerodyne.technion.ac.il (aerodyne.technion.ac.il [132.68.147.2] (may be forged))
	by els.sgi.com (8.12.10/8.12.2/els-2.2) with ESMTP id h96L1igJ5646485
	for <info-volumizer@els.sgi.com>; Mon, 6 Oct 2003 14:02:00 -0700 (PDT)
Received: from [132.68.147.9] ([132.68.147.9])
	by aerodyne.technion.ac.il (8.12.9/8.12.8) with ESMTP id h96Kx8m0071802
	for <info-volumizer@els.sgi.com>; Mon, 6 Oct 2003 22:59:08 +0200
Date: Mon, 6 Oct 2003 22:55:59 +0200 (IST)
From: Yakov Mindelis <jack@aerodyne.technion.ac.il>
X-X-Sender: jack@aeone.technion.ac.il
To: info-volumizer@els.sgi.com
Subject: Re: [info-volumizer] vzParameterVolumeTexture with vzStructuredHexaMesh?
In-Reply-To: <008601c38bd3$3dd6e640$4a5a0e86@praveenlaptop>
Message-ID: <Pine.LNX.4.44.0310062243480.30392-100000@aeone.technion.ac.il>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
Sender: owner-info-volumizer@els.sgi.com
Precedence: bulk
Reply-To: info-volumizer@els.sgi.com


> In your case however, it is probably more important to decide which
> render-action makes sense for your problem. The TMShader is used with
> TMRenderAction and hence the rendering will be implemented by slicing the
> geometry using viewport aligned slices and rendering this 'proxy geometry'.
> The geometry simply provides the region of interest in this case since the
> values in the ParameterVolumeTexture are mapped to the geometryROI (a
> cuboidal region) using texgen. Hence there is no direct correspondence
> between the vertex coordinates in the StructuredHexaMesh and the values in
> the ParameterVolumeTexture.
> 
> When using the PTRenderAction though, the vertex coordinates of the geometry
> correspond to the vertex values in the ParameterVertexData. Hence there is a
> direct correspondence between the geometry and the appearance of the shape.
> 
> In either of the above cases, the LUT is simply applied as a
> post-interpolation lookup used to map the value at the rendered vertex
> to an RGBA value.

Ok, I see, let me ask it as follows:

The situation when I define lut wich allows me to control rgb and a values 
independently introduce the problem of lut-value based interpolation 
instead of 4 (r, g, b, a) interpolation. In this case the alpha value was 
defined in non-continuous way. Defifning rgb value in non-continuous way 
will led to correct colors but  with alpha jumps when passing form on 
color value defined by the resolution  to another. The "workaround" (I 
don't know yet if it is viable, that's why the quotes are there) is to 
make vzShapeSet instead of vzShape. The easiest way is to implement is to 
create hexaMesh of one hexahedra per shape instead of vzBolck alligned 
with the mesh hexahedra (the mesh isn't cartesion, so it is not box with 
all angles of 90 degrees). How much will it impact performance/memory 
usage comparing to vzStructuredHexaMesh?  


Thanks in advance,
Jack.



From info-volumizer-owner@els.sgi.com Tue Oct  7 03:50:45 2003
Received: (from majordom@localhost)
	by els.sgi.com (8.12.10/8.12.2/els-2.2) id h97Amrwf5690213;
	Tue, 7 Oct 2003 03:48:53 -0700 (PDT)
Received: from sgindia.newdelhi.sgi.com (newdelhi.sgi.com [134.14.90.2])
	by els.sgi.com (8.12.10/8.12.2/els-2.2) with ESMTP id h97AjAgJ5670086
	for <info-volumizer@els.sgi.com>; Tue, 7 Oct 2003 03:45:13 -0700 (PDT)
Received: from praveenlaptop ([134.14.90.74]) by sgindia.newdelhi.sgi.com (980427.SGI.8.8.8/980728.SGI.AUTOCF) via SMTP id OAA23166 for <info-volumizer@els.sgi.com>; Tue, 7 Oct 2003 14:59:56 +0530 (IST)
Message-ID: <014c01c38cc0$87378cc0$4a5a0e86@praveenlaptop>
From: "Praveen Bhaniramka" <praveenb@sgi.com>
To: <info-volumizer@els.sgi.com>
References: <Pine.LNX.4.44.0310062243480.30392-100000@aeone.technion.ac.il>
Subject: Re: [info-volumizer] vzParameterVolumeTexture with vzStructuredHexaMesh?
Date: Tue, 7 Oct 2003 16:18:21 +0530
MIME-Version: 1.0
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2800.1106
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106
Sender: owner-info-volumizer@els.sgi.com
Precedence: bulk
Reply-To: info-volumizer@els.sgi.com

Hi Yakov,

> Ok, I see, let me ask it as follows:
>
> The situation when I define lut wich allows me to control rgb and a values
> independently introduce the problem of lut-value based interpolation
> instead of 4 (r, g, b, a) interpolation. In this case the alpha value was
> defined in non-continuous way. Defifning rgb value in non-continuous way
> will led to correct colors but  with alpha jumps when passing form on
> color value defined by the resolution  to another.

Currently, it is only possible to use one of the vertex attributes to lookup
the LUT when using the PTLUTShader. If you want to specify the per-vertex
RGB colors and use them for the rendering directly, we will need to provide
you with a new shader for that since the current render action
infrastructure hides this functionality from the application developer.

> The "workaround" (I
> don't know yet if it is viable, that's why the quotes are there) is to
> make vzShapeSet instead of vzShape. The easiest way is to implement is to
> create hexaMesh of one hexahedra per shape instead of vzBolck alligned
> with the mesh hexahedra (the mesh isn't cartesion, so it is not box with
> all angles of 90 degrees). How much will it impact performance/memory
> usage comparing to vzStructuredHexaMesh?

The other bigger issue with this approach is that of correctness. The
hexahedral shapes will need to be sorted in a back-to-front visibility
sorted order before rendering to ensure correct alpha compositing. This will
be much harder to do with hexahedral elements. Currently, Volumizer will
tessellate your grid into a tetrahedral mesh, sort the tetrahedra using the
current viewing information and then render each tetrahedron in the computed
order. Sorting the hexahedral elements directly will be a nightmare and more
likely to give inaccurate results.

- Praveen


From info-volumizer-owner@els.sgi.com Tue Oct  7 08:53:46 2003
Received: (from majordom@localhost)
	by els.sgi.com (8.12.10/8.12.2/els-2.2) id h97FrG045716404;
	Tue, 7 Oct 2003 08:53:16 -0700 (PDT)
Received: from aerodyne.technion.ac.il (aerodyne.technion.ac.il [132.68.147.2])
	by els.sgi.com (8.12.10/8.12.2/els-2.2) with ESMTP id h97DXpgJ5667616
	for <info-volumizer@els.sgi.com>; Tue, 7 Oct 2003 06:33:52 -0700 (PDT)
Received: from [132.68.147.9] ([132.68.147.9])
	by aerodyne.technion.ac.il (8.12.9/8.12.8) with ESMTP id h97DVPm0036110
	for <info-volumizer@els.sgi.com>; Tue, 7 Oct 2003 15:31:25 +0200
Date: Tue, 7 Oct 2003 15:30:53 +0200 (IST)
From: Yakov Mindelis <jack@aerodyne.technion.ac.il>
X-X-Sender: jack@aeone.technion.ac.il
To: info-volumizer@els.sgi.com
Subject: Re: [info-volumizer] vzParameterVolumeTexture with vzStructuredHexaMesh?
In-Reply-To: <014c01c38cc0$87378cc0$4a5a0e86@praveenlaptop>
Message-ID: <Pine.LNX.4.44.0310071522580.2046-100000@aeone.technion.ac.il>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
Sender: owner-info-volumizer@els.sgi.com
Precedence: bulk
Reply-To: info-volumizer@els.sgi.com

Hi Praveen,

> > Ok, I see, let me ask it as follows:
> >
> > The situation when I define lut wich allows me to control rgb and a values
> > independently introduce the problem of lut-value based interpolation
> > instead of 4 (r, g, b, a) interpolation. In this case the alpha value was
> > defined in non-continuous way. Defifning rgb value in non-continuous way
> > will led to correct colors but  with alpha jumps when passing form on
> > color value defined by the resolution  to another.
> 
> Currently, it is only possible to use one of the vertex attributes to lookup
> the LUT when using the PTLUTShader. If you want to specify the per-vertex
> RGB colors and use them for the rendering directly, we will need to provide
> you with a new shader for that since the current render action
> infrastructure hides this functionality from the application developer.

Any hints how to do that? The reference is rather sparse (11 lines). There 
is also note about ISL-based shaders. Any help/simple-example-of-custom-shader
will be appreciated
 

> order. Sorting the hexahedral elements directly will be a nightmare and more
> likely to give inaccurate results.

I was afraid that the sorting issue would pop up here (and it did:( ) 

TIA,
Jack




From info-volumizer-owner@els.sgi.com Wed Oct  8 22:51:03 2003
Received: (from majordom@localhost)
	by els.sgi.com (8.12.10/8.12.2/els-2.2) id h995oJ4E5713442;
	Wed, 8 Oct 2003 22:50:19 -0700 (PDT)
Received: from tolkor.sgi.com (tolkor.sgi.com [198.149.18.6])
	by els.sgi.com (8.12.10/8.12.2/els-2.2) with ESMTP id h98La9gJ5720067
	for <info-volumizer@els.sgi.com>; Wed, 8 Oct 2003 14:36:09 -0700 (PDT)
Received: from ledzep.americas.sgi.com (ledzep.americas.sgi.com [192.48.203.134])
	by tolkor.sgi.com (8.12.9/8.12.9/linux-outbound_gateway-1.1) with ESMTP id h98Lp3Hc030621
	for <info-volumizer@els.sgi.com>; Wed, 8 Oct 2003 16:51:03 -0500
Received: from spindle.corp.sgi.com (spindle.corp.sgi.com [198.29.75.13])
	by ledzep.americas.sgi.com (8.12.9/8.12.9/generic_config-1.2) with ESMTP id h98LXElm23815433
	for <info-volumizer@els.sgi.com>; Wed, 8 Oct 2003 16:33:14 -0500 (CDT)
Received: from mtv-atc-009e--n.corp.sgi.com (mtv-atc-009e--n.corp.sgi.com [192.26.60.130])
	by spindle.corp.sgi.com (8.12.9/8.12.9/generic_config-1.2) with ESMTP id h98LXDXb115708080;
	Wed, 8 Oct 2003 14:33:13 -0700 (PDT)
Received: by mtv-atc-009e--n.corp.sgi.com with Internet Mail Service (5.5.2655.55)
	id <4PFZRN8P>; Wed, 8 Oct 2003 14:33:13 -0700
Message-ID: <401AB3C78169D711B9F50004ACE84267013845B8@mtv-atc-009e--n.corp.sgi.com>
From: Thomas Tannert <ttannert@sgi.com>
To: "'info-volumizer@sgi.com'" <info-volumizer@sgi.com>,
        "'info-performer@sgi.com'" <info-performer@sgi.com>
Subject: [info-volumizer] IEEE Vis 2003 Volumizer + Scalability Birds-of-a-Feather Meeting 
	Information
Date: Wed, 8 Oct 2003 14:33:11 -0700 
MIME-Version: 1.0
X-Mailer: Internet Mail Service (5.5.2655.55)
Content-Type: text/plain;
	charset="ISO-8859-1"
Sender: owner-info-volumizer@els.sgi.com
Precedence: bulk
Reply-To: info-volumizer@els.sgi.com

========================================================================
OpenGL Volumizer and Scalability Techniques for Scientific Visualization
                   "Birds-of-a-Feather" Meeting
                        Tuesday, October 21
                          6:30pm-8:00pm
                     Doubletree Seattle Airport
                          Room: Cascade 1
========================================================================

Volumizers and all IEEE Visualization 2003 attendees,

Please join us for the OpenGL Volumizer and Scalability Techniques for 
Scientific Visualization "Birds-of-a-Feather" meeting in two weeks in 
Seattle, WA at IEEE Visualization 2003.  
http://vis.computer.org/vis2003/

We will be discussing the latest news about OpenGL Volumizer. The latest
version of this API, OpenGL Volumizer 2.6, enables the creation of more 
sophisticated applications that combine advanced volumetric and surface 
rendering techniques with scalable system capabilities to significantly 
reduce time to discovery. Scalability enhancements have also been made 
in non-volumetric hardware, scene graphs and GPU based rendering that 
enable applications that focus on geometric rendering or integrate 
geometry with volume data to work with every increasing data set sizes 
and deliver greater performance and image fidelity.  These techniques 
will be reviewed and their implications for scientific visualization 
discussed.  

Finally, a sneak preview of OpenGL Volumizer 2.6 will be shown and we 
will be showcasing SGI's new scalable graphics engine the SGI Onyx4 
UltimateVision at the meeting.

Agenda:
6:30pm   Social Reception; Drinks & Hors D'ouvres
6:45pm   Welcome & Volumizer Update
         Scalability techniques and SGI Core Rendering News & Update
         Volumizer 2.6 and other DEMOS
         Q&A
8:00pm   Adjourn

We look forward to seeing you there!

Thank You-
Thomas.

--------------------------------------------
Thomas Tannert	
VSG Marketing - SGI
1600 Amphitheatre Pkwy., M/S 405
Mt View, CA 94043
E-mail: ttannert@sgi.com
Phone: (650) 933 5237

From info-volumizer-owner@els.sgi.com Thu Oct  9 01:47:42 2003
Received: (from majordom@localhost)
	by els.sgi.com (8.12.10/8.12.2/els-2.2) id h998k52g5728918;
	Thu, 9 Oct 2003 01:46:05 -0700 (PDT)
Received: from sgindia.newdelhi.sgi.com (newdelhi.sgi.com [134.14.90.2])
	by els.sgi.com (8.12.10/8.12.2/els-2.2) with ESMTP id h998dkgJ5365825
	for <info-volumizer@els.sgi.com>; Thu, 9 Oct 2003 01:39:49 -0700 (PDT)
Received: from praveenlaptop ([134.14.90.74]) by sgindia.newdelhi.sgi.com (980427.SGI.8.8.8/980728.SGI.AUTOCF) via SMTP id MAA69575 for <info-volumizer@els.sgi.com>; Thu, 9 Oct 2003 12:54:28 +0530 (IST)
Message-ID: <00e601c38e41$55749cf0$4a5a0e86@praveenlaptop>
From: "Praveen Bhaniramka" <praveenb@sgi.com>
To: <info-volumizer@els.sgi.com>
References: <Pine.LNX.4.44.0310071522580.2046-100000@aeone.technion.ac.il>
Subject: Re: [info-volumizer] vzParameterVolumeTexture with vzStructuredHexaMesh?
Date: Thu, 9 Oct 2003 14:12:50 +0530
MIME-Version: 1.0
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2800.1106
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106
Sender: owner-info-volumizer@els.sgi.com
Precedence: bulk
Reply-To: info-volumizer@els.sgi.com

> > Currently, it is only possible to use one of the vertex attributes to
lookup
> > the LUT when using the PTLUTShader. If you want to specify the
per-vertex
> > RGB colors and use them for the rendering directly, we will need to
provide
> > you with a new shader for that since the current render action
> > infrastructure hides this functionality from the application developer.
>
> Any hints how to do that? The reference is rather sparse (11 lines). There
> is also note about ISL-based shaders. Any
help/simple-example-of-custom-shader
> will be appreciated

Unfortunately, there is no infrastructure for implementing custom shaders
right now in the PTRenderAction. The ISL-based and other custom shaders can
be used only with the TMRenderAction. We will want to provide something
similar for the PTRenderAction in the near-future. For now, I will put it on
the Volumizer TODO list :-)

Thanks.
Praveen


From info-volumizer-owner@els.sgi.com Thu Oct  9 10:01:46 2003
Received: (from majordom@localhost)
	by els.sgi.com (8.12.10/8.12.2/els-2.2) id h99GxCAr5489152;
	Thu, 9 Oct 2003 09:59:12 -0700 (PDT)
Received: from aerodyne.technion.ac.il (aerodyne.technion.ac.il [132.68.147.2])
	by els.sgi.com (8.12.10/8.12.2/els-2.2) with ESMTP id h99GMZgJ5684934
	for <info-volumizer@els.sgi.com>; Thu, 9 Oct 2003 09:22:36 -0700 (PDT)
Received: from [132.68.147.9] ([132.68.147.9])
	by aerodyne.technion.ac.il (8.12.9/8.12.8) with ESMTP id h99GK4m0108122
	for <info-volumizer@els.sgi.com>; Thu, 9 Oct 2003 18:20:04 +0200
Date: Thu, 9 Oct 2003 18:18:55 +0200 (IST)
From: Yakov Mindelis <jack@aerodyne.technion.ac.il>
X-X-Sender: jack@aeone.technion.ac.il
To: info-volumizer@els.sgi.com
Subject: Re: [info-volumizer] vzParameterVolumeTexture with vzStructuredHexaMesh?
In-Reply-To: <00e601c38e41$55749cf0$4a5a0e86@praveenlaptop>
Message-ID: <Pine.LNX.4.44.0310091815260.15681-100000@aeone.technion.ac.il>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
Sender: owner-info-volumizer@els.sgi.com
Precedence: bulk
Reply-To: info-volumizer@els.sgi.com

Hi Praveen,

> Unfortunately, there is no infrastructure for implementing custom shaders
> right now in the PTRenderAction. The ISL-based and other custom shaders can
> be used only with the TMRenderAction. We will want to provide something
> similar for the PTRenderAction in the near-future. For now, I will put it on
> the Volumizer TODO list :-)

Can you drop some bones  to the poor people here, like: chances 
for separate rgba implementations with meshes in next version?


TIA, 
Jack.


From info-volumizer-owner@els.sgi.com Thu Oct  9 10:40:45 2003
Received: (from majordom@localhost)
	by els.sgi.com (8.12.10/8.12.2/els-2.2) id h99Hdwnr5690014;
	Thu, 9 Oct 2003 10:39:58 -0700 (PDT)
Received: from sgindia.newdelhi.sgi.com (newdelhi.sgi.com [134.14.90.2])
	by els.sgi.com (8.12.10/8.12.2/els-2.2) with ESMTP id h99HNXgJ5787830
	for <info-volumizer@els.sgi.com>; Thu, 9 Oct 2003 10:23:35 -0700 (PDT)
Received: from praveenlaptop (mtv-vpn-sw-corp-0-56.corp.sgi.com [134.15.0.56]) by sgindia.newdelhi.sgi.com (980427.SGI.8.8.8/980728.SGI.AUTOCF) via SMTP id VAA81527 for <info-volumizer@els.sgi.com>; Thu, 9 Oct 2003 21:38:09 +0530 (IST)
Message-ID: <00b101c38e8a$801d49e0$130a10ac@praveenlaptop>
From: "Praveen Bhaniramka" <praveenb@sgi.com>
To: "info-volumizer" <info-volumizer@els.sgi.com>
Subject: [info-volumizer] Win an Onyx4 UltimateVision - The SGI and ATI Demo Challenge
Date: Thu, 9 Oct 2003 22:56:29 +0530
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="----=_NextPart_000_00AA_01C38EB8.934DC520"
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2800.1106
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106
Sender: owner-info-volumizer@els.sgi.com
Precedence: bulk
Reply-To: info-volumizer@els.sgi.com

This is a multi-part message in MIME format.

------=_NextPart_000_00AA_01C38EB8.934DC520
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Hi Volumizers,

Have a look and spread the word:  The SGI and ATI Demo Challenge

   http://www.sgi.com/visualization/onyx4/challenge/

Quoting the site:
SGI and ATI Technologies are out to find the hottest graphics
programmers and reward them with the best visualization technology in
the world.

What's at stake?
Over $80,000 worth in prizes and bragging rights to the most compelling
OpenGL API demos as judged by a panel of visualization luminaries.

2 Grand Prize winners each receive an Onyx4 UltimateVision system --
the most powerful visualization system on the planet - a $40,000 value
per system

5 First Prize winners will get an ATI FireGL X1-128 graphics
accelerator card, with capabilities the average PC only dreams of having

...

Visit http://www.sgi.com/visualization/onyx4/challenge/ to get all the
details, FAQ, official rules, and to register.

Cheers,
Praveen

--
Praveen Bhaniramka
Advanced Graphics Division
Silicon Graphics
+91-98991-15641

------=_NextPart_000_00AA_01C38EB8.934DC520
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Diso-8859-1">
<META content=3D"MSHTML 6.00.2800.1106" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV>Hi Volumizers,<BR><BR>Have a look and spread the word:  The =
SGI and=20
ATI Demo Challenge<BR><BR>   <A=20
href=3D"http://www.sgi.com/visualization/onyx4/challenge/">http://www.sgi=
.com/visualization/onyx4/challenge/</A><BR><BR>Quoting=20
the site:<BR>SGI and ATI Technologies are out to find the hottest=20
graphics<BR>programmers and reward them with the best visualization =
technology=20
in<BR>the world.<BR><BR>What's at stake?<BR>Over $80,000 worth in prizes =
and=20
bragging rights to the most compelling<BR>OpenGL=AE API demos as judged =
by a panel=20
of visualization luminaries.<BR><BR>2 Grand Prize winners each receive =
an Onyx4=99=20
UltimateVision=99 system --<BR>the most powerful visualization system on =
the=20
planet - a $40,000 value<BR>per system<BR><BR>5 First Prize winners will =
get an=20
ATI=AE FireGL=99 X1-128 graphics<BR>accelerator card, with capabilities =
the average=20
PC only dreams of having<BR><BR>...<BR><BR>Visit <A=20
href=3D"http://www.sgi.com/visualization/onyx4/challenge/">http://www.sgi=
.com/visualization/onyx4/challenge/</A>=20
to get all the<BR>details, FAQ, official rules, and to =
register.<BR></DIV>
<DIV>Cheers,</DIV>
<DIV>Praveen</DIV>
<DIV> </DIV>
<DIV>--<BR>Praveen Bhaniramka<BR>Advanced Graphics Division<BR>Silicon=20
Graphics<BR>+91-98991-15641<BR></DIV></BODY></HTML>

------=_NextPart_000_00AA_01C38EB8.934DC520--


From info-volumizer-owner@els.sgi.com Thu Oct  9 10:40:41 2003
Received: (from majordom@localhost)
	by els.sgi.com (8.12.10/8.12.2/els-2.2) id h99HdwSX5774200;
	Thu, 9 Oct 2003 10:39:58 -0700 (PDT)
Received: from sgindia.newdelhi.sgi.com (newdelhi.sgi.com [134.14.90.2])
	by els.sgi.com (8.12.10/8.12.2/els-2.2) with ESMTP id h99HSdgJ5697760
	for <info-volumizer@els.sgi.com>; Thu, 9 Oct 2003 10:28:42 -0700 (PDT)
Received: from praveenlaptop (mtv-vpn-sw-corp-0-56.corp.sgi.com [134.15.0.56]) by sgindia.newdelhi.sgi.com (980427.SGI.8.8.8/980728.SGI.AUTOCF) via SMTP id VAA80988 for <info-volumizer@els.sgi.com>; Thu, 9 Oct 2003 21:43:11 +0530 (IST)
Message-ID: <00c301c38e8b$36968ba0$130a10ac@praveenlaptop>
From: "Praveen Bhaniramka" <praveenb@sgi.com>
To: <info-volumizer@els.sgi.com>
References: <Pine.LNX.4.44.0310091815260.15681-100000@aeone.technion.ac.il>
Subject: Re: [info-volumizer] vzParameterVolumeTexture with vzStructuredHexaMesh?
Date: Thu, 9 Oct 2003 23:01:30 +0530
MIME-Version: 1.0
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2800.1106
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106
Sender: owner-info-volumizer@els.sgi.com
Precedence: bulk
Reply-To: info-volumizer@els.sgi.com

> > Unfortunately, there is no infrastructure for implementing custom
shaders
> > right now in the PTRenderAction. The ISL-based and other custom shaders
can
> > be used only with the TMRenderAction. We will want to provide something
> > similar for the PTRenderAction in the near-future. For now, I will put
it on
> > the Volumizer TODO list :-)
>
> Can you drop some bones  to the poor people here, like: chances
> for separate rgba implementations with meshes in next version?

Volumizer 2.6 is scheduled to be released in December of this year. We have
quite a few exciting new features coming with this release which we will be
discussing at the Volumizer BOF during the upcoming IEEE Visualization
conference in a couple of weeks. We will give an update on this list about
this after the conference.

Let me have a closer look at this particular feature and estimate the time
involved in this work. I will follow-up with you offline to see what exactly
you need :-)

- Praveen


From info-volumizer-owner@els.sgi.com Thu Oct  9 21:28:06 2003
Received: (from majordom@localhost)
	by els.sgi.com (8.12.10/8.12.2/els-2.2) id h9A4R4UF5790101;
	Thu, 9 Oct 2003 21:27:04 -0700 (PDT)
Received: from boole.cs.uh.edu (Boole.cs.uh.edu [129.7.240.11])
	by els.sgi.com (8.12.10/8.12.2/els-2.2) with ESMTP id h99KRRgJ5755745
	for <info-volumizer@els.sgi.com>; Thu, 9 Oct 2003 13:27:28 -0700 (PDT)
Received: from themis.cs.uh.edu (themis [129.7.240.5])
	by boole.cs.uh.edu (Postfix) with ESMTP id 1DC74F97B
	for <info-volumizer@els.sgi.com>; Thu,  9 Oct 2003 15:24:30 -0500 (CDT)
Received: from localhost (chingyao@localhost)
	by themis.cs.uh.edu (8.11.7+Sun/8.11.4) with ESMTP id h99KOTM28878
	for <info-volumizer@els.sgi.com>; Thu, 9 Oct 2003 15:24:29 -0500 (CDT)
X-Authentication-Warning: themis.cs.uh.edu: chingyao owned process doing -bs
Date: Thu, 9 Oct 2003 15:24:29 -0500 (CDT)
From: Ching-Yao Lin <chingyao@cs.uh.edu>
To: <info-volumizer@els.sgi.com>
Subject: [info-volumizer] Adjust the alpha value
In-Reply-To: <00c301c38e8b$36968ba0$130a10ac@praveenlaptop>
Message-ID: <Pine.GSO.4.33.0310091510270.28784-100000@themis.cs.uh.edu>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
Sender: owner-info-volumizer@els.sgi.com
Precedence: bulk
Reply-To: info-volumizer@els.sgi.com

Hi,

We have a data which can be display using Volumizer2. The texture format
is VZ_LUMINANCE, data type is unsigned char. We have also setup the lookup
table for color, so we can specify the opacity of different color.

Now we want to specify which area we would like to display. So we added
another channel(alpha) manually into the data and set the texture format
to VZ_LUMINANCE_ALPHA. However, there is no effect when we change the
alpha value. Is it because the color lookup table?

The Volumizer guide has mentioned that we are able to use vzTMTag Shader
to do it. But I had an old program(which was using Volumizer 1.2) and I
just modify the alpha value of every voxel and set dirty flag then I can
get the desired result. Is the same technique can apply to Volumizer 2.4?

I just did a test that even all the alpha value were initialized to 0 and
I can still see the full data set.


Thank you very much for your help.

Ching-Yao Lin



From info-volumizer-owner@els.sgi.com Thu Oct  9 22:56:09 2003
Received: (from majordom@localhost)
	by els.sgi.com (8.12.10/8.12.2/els-2.2) id h9A5smn85243194;
	Thu, 9 Oct 2003 22:54:48 -0700 (PDT)
Received: from sgindia.newdelhi.sgi.com (newdelhi.sgi.com [134.14.90.2])
	by els.sgi.com (8.12.10/8.12.2/els-2.2) with ESMTP id h9A5rggJ5674605
	for <info-volumizer@els.sgi.com>; Thu, 9 Oct 2003 22:53:44 -0700 (PDT)
Received: from praveenlaptop ([134.14.90.74]) by sgindia.newdelhi.sgi.com (980427.SGI.8.8.8/980728.SGI.AUTOCF) via SMTP id KAA96762 for <info-volumizer@els.sgi.com>; Fri, 10 Oct 2003 10:08:22 +0530 (IST)
Message-ID: <00ef01c38ef3$4c66f9c0$130a10ac@praveenlaptop>
From: "Praveen Bhaniramka" <praveenb@sgi.com>
To: <info-volumizer@els.sgi.com>
References: <Pine.GSO.4.33.0310091510270.28784-100000@themis.cs.uh.edu>
Subject: Re: [info-volumizer] Adjust the alpha value
Date: Fri, 10 Oct 2003 11:26:50 +0530
MIME-Version: 1.0
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2800.1106
X-MIMEOLE: Produced By Microsoft MimeOLE V6.00.2800.1106
Sender: owner-info-volumizer@els.sgi.com
Precedence: bulk
Reply-To: info-volumizer@els.sgi.com

Hi Ching-Yao,

I assume that you are using the TMLUTShader for rendering your volume. When
using LUMINANCE_ALPHA as the format for the texture data, the LUMINANCE
value in the texture would be used to lookup the RGB values in the LUT while
the ALPHA value in the texture will be used to lookup the A value in the
LUT.

>From man glColorTableSGI -
....
"
     Then the result of color table lookup is as follows:

                                       Resulting Texture Components
               Table Internal Format   R       G       B       A
               _____________________________________________________
               GL_ALPHA                R       G       B       A[a]
               GL_LUMINANCE            L[r]    L[g]    L[b]    At
               GL_LUMINANCE_ALPHA      L[r]    L[g]    L[b]    A[a]
               GL_INTENSITY            I[r]    I[g]    I[b]    I[a]
               GL_RGB                  R[r]    G[g]    B[b]    A
               GL_RGBA                 R[r]    G[g]    B[b]    A[a]
"

If the LUT has internal format of RGBA, the RGB will be looked up using the
rgb values of the texture data. If your case, r = g = b = LUMINANCE value of
texture data. Hence the original luminance values do not control the alpha
anymore. When using LUMINANCE only data however, the r = g = b = a =
LUMINANCE value of texture data and so the LUMINANCE value still controls
the output A value.

Depending on what you want to do, there would be multiple options to
accomplish the same result -

1. If you simply want to use a volume data set and 'remove' portions of the
volume manually, you can go the 1.2 way and set the appropriate voxel values
(LUMINANCE) to 0 and then call vzParameterVolumeTexture::setDataPtr() as you
modify the data. This will essentially mark the data dirty and the data will
be reloaded in the next frame.
2. If you want to keep around the original copy of the volume data and
simply modify the voxel-mask, then you can use the TMTagShader, where you
provide the volume data as the 'volume' texture and the voxel-mask as the
'tag' texture. Everytime you modify the tag texture, you call setDataPtr and
the 'tag' texture is only reloaded. The original volume is still preserved.
3. Use your current method of having a LUMINANCE_ALPHA volume texture and
control the region-of-interest using the ALPHA channel. You will still need
to call setDataPtr when you modify the data. The LUMINANCE value will
control the RGB of the output pixels and ALPHA will control the A as
described above. When you are setting all the values to 0, I assume that you
are only setting the LUMINANCE values to 0 which will force all the output
pixels to have the same RGB color given by the 0'th entry in the LUT.

In methods 1 and 2, the LUT can still be used to control the RGB and A
values of the 'volume' texture, but not with method 3. See the examples in
src/apps/simple/tmRenderAction to see the various differences, or simply use
the XML loaders in volview to play with different techniques :-)

hth,
Praveen



----- Original Message -----
From: "Ching-Yao Lin" <chingyao@cs.uh.edu>
To: <info-volumizer@els.sgi.com>
Sent: Friday, October 10, 2003 1:54 AM
Subject: [info-volumizer] Adjust the alpha value


> Hi,
>
> We have a data which can be display using Volumizer2. The texture format
> is VZ_LUMINANCE, data type is unsigned char. We have also setup the lookup
> table for color, so we can specify the opacity of different color.
>
> Now we want to specify which area we would like to display. So we added
> another channel(alpha) manually into the data and set the texture format
> to VZ_LUMINANCE_ALPHA. However, there is no effect when we change the
> alpha value. Is it because the color lookup table?
>
> The Volumizer guide has mentioned that we are able to use vzTMTag Shader
> to do it. But I had an old program(which was using Volumizer 1.2) and I
> just modify the alpha value of every voxel and set dirty flag then I can
> get the desired result. Is the same technique can apply to Volumizer 2.4?
>
> I just did a test that even all the alpha value were initialized to 0 and
> I can still see the full data set.
>
>
> Thank you very much for your help.
>
> Ching-Yao Lin
>
>


From info-volumizer-owner@els.sgi.com Sun Oct 12 03:41:23 2003
Received: (from majordom@localhost)
	by els.sgi.com (8.12.10/8.12.2/els-2.2) id h9CAeYKx5795455;
	Sun, 12 Oct 2003 03:40:34 -0700 (PDT)
Received: from mtaw6.prodigy.net (mtaw6.prodigy.net [64.164.98.56])
	by els.sgi.com (8.12.10/8.12.2/els-2.2) with ESMTP id h9AFGZgJ5791182
	for <info-volumizer@els.sgi.com>; Fri, 10 Oct 2003 08:16:36 -0700 (PDT)
Received: from cs.uh.edu (adsl-65-70-208-173.dsl.austtx.swbell.net [65.70.208.173])
	by mtaw6.prodigy.net (8.12.9/8.12.3) with ESMTP id h9AFDG7Q010058
	for <info-volumizer@els.sgi.com>; Fri, 10 Oct 2003 08:13:17 -0700 (PDT)
Message-ID: <3F86A0C1.C3FE4A74@cs.uh.edu>
Date: Fri, 10 Oct 2003 07:06:25 -0500
From: Ching-Yao Lin <chingyao@cs.uh.edu>
X-Mailer: Mozilla 4.8C-SGI [en] (X11; U; IRIX64 6.5 IP35)
X-Accept-Language: en
MIME-Version: 1.0
To: info-volumizer@els.sgi.com
Subject: Re: [info-volumizer] Adjust the alpha value
References: <Pine.GSO.4.33.0310091510270.28784-100000@themis.cs.uh.edu> <00ef01c38ef3$4c66f9c0$130a10ac@praveenlaptop>
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Sender: owner-info-volumizer@els.sgi.com
Precedence: bulk
Reply-To: info-volumizer@els.sgi.com

Hi, Praveen,

Thank you very much for your input. I guess I will try option 2. We have
both 2D slices(using traditional 2D texture) and 3D volume(using
Volumizer) on the screen.

We only want to adjust the visible part of 3D volume. Maybe option 2 is
a better solution.

Thanks again.

Ching-Yao



Praveen Bhaniramka wrote:
> 
> Hi Ching-Yao,
> 
> I assume that you are using the TMLUTShader for rendering your volume. When
> using LUMINANCE_ALPHA as the format for the texture data, the LUMINANCE
> value in the texture would be used to lookup the RGB values in the LUT while
> the ALPHA value in the texture will be used to lookup the A value in the
> LUT.
> 
> >From man glColorTableSGI -
> ....
> "
>      Then the result of color table lookup is as follows:
> 
>                                        Resulting Texture Components
>                Table Internal Format   R       G       B       A
>                _____________________________________________________
>                GL_ALPHA                R       G       B       A[a]
>                GL_LUMINANCE            L[r]    L[g]    L[b]    At
>                GL_LUMINANCE_ALPHA      L[r]    L[g]    L[b]    A[a]
>                GL_INTENSITY            I[r]    I[g]    I[b]    I[a]
>                GL_RGB                  R[r]    G[g]    B[b]    A
>                GL_RGBA                 R[r]    G[g]    B[b]    A[a]
> "
> 
> If the LUT has internal format of RGBA, the RGB will be looked up using the
> rgb values of the texture data. If your case, r = g = b = LUMINANCE value of
> texture data. Hence the original luminance values do not control the alpha
> anymore. When using LUMINANCE only data however, the r = g = b = a =
> LUMINANCE value of texture data and so the LUMINANCE value still controls
> the output A value.
> 
> Depending on what you want to do, there would be multiple options to
> accomplish the same result -
> 
> 1. If you simply want to use a volume data set and 'remove' portions of the
> volume manually, you can go the 1.2 way and set the appropriate voxel values
> (LUMINANCE) to 0 and then call vzParameterVolumeTexture::setDataPtr() as you
> modify the data. This will essentially mark the data dirty and the data will
> be reloaded in the next frame.
> 2. If you want to keep around the original copy of the volume data and
> simply modify the voxel-mask, then you can use the TMTagShader, where you
> provide the volume data as the 'volume' texture and the voxel-mask as the
> 'tag' texture. Everytime you modify the tag texture, you call setDataPtr and
> the 'tag' texture is only reloaded. The original volume is still preserved.
> 3. Use your current method of having a LUMINANCE_ALPHA volume texture and
> control the region-of-interest using the ALPHA channel. You will still need
> to call setDataPtr when you modify the data. The LUMINANCE value will
> control the RGB of the output pixels and ALPHA will control the A as
> described above. When you are setting all the values to 0, I assume that you
> are only setting the LUMINANCE values to 0 which will force all the output
> pixels to have the same RGB color given by the 0'th entry in the LUT.
> 
> In methods 1 and 2, the LUT can still be used to control the RGB and A
> values of the 'volume' texture, but not with method 3. See the examples in
> src/apps/simple/tmRenderAction to see the various differences, or simply use
> the XML loaders in volview to play with different techniques :-)
> 
> hth,
> Praveen
> 
> ----- Original Message -----
> From: "Ching-Yao Lin" <chingyao@cs.uh.edu>
> To: <info-volumizer@els.sgi.com>
> Sent: Friday, October 10, 2003 1:54 AM
> Subject: [info-volumizer] Adjust the alpha value
> 
> > Hi,
> >
> > We have a data which can be display using Volumizer2. The texture format
> > is VZ_LUMINANCE, data type is unsigned char. We have also setup the lookup
> > table for color, so we can specify the opacity of different color.
> >
> > Now we want to specify which area we would like to display. So we added
> > another channel(alpha) manually into the data and set the texture format
> > to VZ_LUMINANCE_ALPHA. However, there is no effect when we change the
> > alpha value. Is it because the color lookup table?
> >
> > The Volumizer guide has mentioned that we are able to use vzTMTag Shader
> > to do it. But I had an old program(which was using Volumizer 1.2) and I
> > just modify the alpha value of every voxel and set dirty flag then I can
> > get the desired result. Is the same technique can apply to Volumizer 2.4?
> >
> > I just did a test that even all the alpha value were initialized to 0 and
> > I can still see the full data set.
> >
> >
> > Thank you very much for your help.
> >
> > Ching-Yao Lin
> >
> >

From info-volumizer-owner@els.sgi.com Mon Oct 13 10:54:12 2003
Received: (from majordom@localhost)
	by els.sgi.com (8.12.10/8.12.2/els-2.2) id h9DHr8xO5784456;
	Mon, 13 Oct 2003 10:53:08 -0700 (PDT)
Received: from aerodyne.technion.ac.il (aerodyne.technion.ac.il [132.68.147.2])
	by els.sgi.com (8.12.10/8.12.2/els-2.2) with ESMTP id h9CIdRgJ5730783
	for <info-volumizer@els.sgi.com>; Sun, 12 Oct 2003 11:39:29 -0700 (PDT)
Received: from [132.68.147.9] ([132.68.147.9])
	by aerodyne.technion.ac.il (8.12.9/8.12.8) with ESMTP id h9CIamm0104138
	for <info-volumizer@els.sgi.com>; Sun, 12 Oct 2003 20:36:49 +0200
Date: Sun, 12 Oct 2003 20:33:16 +0200 (IST)
From: Yakov Mindelis <jack@aerodyne.technion.ac.il>
X-X-Sender: jack@aeone.technion.ac.il
To: info-volumizer@els.sgi.com
Subject: Re: [info-volumizer] vzParameterVolumeTexture with vzStructuredHexaMesh?
In-Reply-To: <00c301c38e8b$36968ba0$130a10ac@praveenlaptop>
Message-ID: <Pine.LNX.4.44.0310122017270.24078-100000@aeone.technion.ac.il>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
Sender: owner-info-volumizer@els.sgi.com
Precedence: bulk
Reply-To: info-volumizer@els.sgi.com

Hi Praveen,

> Volumizer 2.6 is scheduled to be released in December of this year. We have
> quite a few exciting new features coming with this release which we will be
> discussing at the Volumizer BOF during the upcoming IEEE Visualization
> conference in a couple of weeks. We will give an update on this list about
> this after the conference.
> 
> Let me have a closer look at this particular feature and estimate the time
> involved in this work. I will follow-up with you offline to see what exactly
> you need :-)

It seems that I came upon something:

TFManager offers bultin spectral LUT. The TFEditor preview shows the 
result in rgba case as two separate channes, I hope that the class source 
will reveal smarter trick than one I tried to generate the desired 
result.


Jack.



From info-volumizer-owner@els.sgi.com Wed Oct 15 20:44:35 2003
Received: (from majordom@localhost)
	by els.sgi.com (8.12.10/8.12.2/els-2.2) id h9G3hmvi5883945;
	Wed, 15 Oct 2003 20:43:48 -0700 (PDT)
Received: from aerodyne.technion.ac.il (aerodyne.technion.ac.il [132.68.147.2])
	by els.sgi.com (8.12.10/8.12.2/els-2.2) with ESMTP id h9FLHCCx5850328
	for <info-volumizer@els.sgi.com>; Wed, 15 Oct 2003 14:17:13 -0700 (PDT)
Received: from [132.68.147.9] ([132.68.147.9])
	by aerodyne.technion.ac.il (8.12.9/8.12.8) with ESMTP id h9FLEPm0107228
	for <info-volumizer@els.sgi.com>; Wed, 15 Oct 2003 23:14:25 +0200
Date: Wed, 15 Oct 2003 23:13:38 +0200 (IST)
From: Yakov Mindelis <jack@aerodyne.technion.ac.il>
X-X-Sender: jack@aeone.technion.ac.il
To: info-volumizer@els.sgi.com
Subject: [info-volumizer] Re: vzShapeSet + vzClipRenderAction problems
In-Reply-To: <Pine.LNX.4.44.0310152256460.10633-100000@aeone.technion.ac.il>
Message-ID: <Pine.LNX.4.44.0310152301510.10633-100000@aeone.technion.ac.il>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
Sender: owner-info-volumizer@els.sgi.com
Precedence: bulk
Reply-To: info-volumizer@els.sgi.com

Hi all,

Still can't understand how do I draw vzShapeSet with vzClipRenderAction.
How the generic draw procedure should look? Should I manage shapes before 
the drawing?

jack->beginRage();

Oh, blast! there are only TM shaders supported, and I tried to draw the PT 
shader. I'm starting to get really pissed off, why is PT stuff lacks all 
the functionality? I'm really dissaponted from the way things are done in 
vz2. I can't do things I could do in vz1.2!!!

jack->endRage();

Sorry for the noise again,
Jack


From info-volumizer-owner@els.sgi.com Wed Oct 15 20:44:35 2003
Received: (from majordom@localhost)
	by els.sgi.com (8.12.10/8.12.2/els-2.2) id h9G3hmt35866025;
	Wed, 15 Oct 2003 20:43:48 -0700 (PDT)
Received: from aerodyne.technion.ac.il (aerodyne.technion.ac.il [132.68.147.2])
	by els.sgi.com (8.12.10/8.12.2/els-2.2) with ESMTP id h9FL2KCx5485021
	for <info-volumizer@els.sgi.com>; Wed, 15 Oct 2003 14:02:21 -0700 (PDT)
Received: from [132.68.147.9] ([132.68.147.9])
	by aerodyne.technion.ac.il (8.12.9/8.12.8) with ESMTP id h9FKxWm0090694
	for <info-volumizer@els.sgi.com>; Wed, 15 Oct 2003 22:59:32 +0200
Date: Wed, 15 Oct 2003 22:58:45 +0200 (IST)
From: Yakov Mindelis <jack@aerodyne.technion.ac.il>
X-X-Sender: jack@aeone.technion.ac.il
To: info-volumizer@els.sgi.com
Subject: [info-volumizer] Re: vzShapeSet + vzClipRenderAction problems
In-Reply-To: <Pine.LNX.4.44.0310151950360.1333-100000@aeone.technion.ac.il>
Message-ID: <Pine.LNX.4.44.0310152256460.10633-100000@aeone.technion.ac.il>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
Sender: owner-info-volumizer@els.sgi.com
Precedence: bulk
Reply-To: info-volumizer@els.sgi.com

> The code appears at the end and the problem occurs on the line:
> 
>     shapeSet->add(shape1);

Ooops, sorry forgot the:
shapeSet = new vzShapeSet();

Silly me...

Plz ignore the previous msg,
Jack.


From info-volumizer-owner@els.sgi.com Wed Oct 15 20:44:35 2003
Received: (from majordom@localhost)
	by els.sgi.com (8.12.10/8.12.2/els-2.2) id h9G3hm155878654;
	Wed, 15 Oct 2003 20:43:48 -0700 (PDT)
Received: from aerodyne.technion.ac.il (aerodyne.technion.ac.il [132.68.147.2])
	by els.sgi.com (8.12.10/8.12.2/els-2.2) with ESMTP id h9FI2oCx5867485
	for <info-volumizer@els.sgi.com>; Wed, 15 Oct 2003 11:02:51 -0700 (PDT)
Received: from [132.68.147.9] ([132.68.147.9])
	by aerodyne.technion.ac.il (8.12.9/8.12.8) with ESMTP id h9FI03m0088854
	for <info-volumizer@els.sgi.com>; Wed, 15 Oct 2003 20:00:03 +0200
Date: Wed, 15 Oct 2003 19:59:21 +0200 (IST)
From: Yakov Mindelis <jack@aerodyne.technion.ac.il>
X-X-Sender: jack@aeone.technion.ac.il
To: info-volumizer@els.sgi.com
Subject: [info-volumizer] vzShapeSet + vzClipRenderAction problems
In-Reply-To: <Pine.LNX.4.44.0310122017270.24078-100000@aeone.technion.ac.il>
Message-ID: <Pine.LNX.4.44.0310151950360.1333-100000@aeone.technion.ac.il>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
Sender: owner-info-volumizer@els.sgi.com
Precedence: bulk
Reply-To: info-volumizer@els.sgi.com

Hi all,

I'm trying to use vzShapeSet + vzClipRenderAction and I must be doing 
something nasty although I can't see what. Even trying to follow the 
things with cvd doesn't help and the debuggers shouts "bugger off" as 
follows :-( :

Lost contact with the Process Control Server.  Please 
check in /usr/tmp...


The code appears at the end and the problem occurs on the line:

    shapeSet->add(shape1);

Thanks in advance.
Jack.


// C / C++
#include <stdio.h>
#include <stdlib.h>
#include <iostream.h>
#include <math.h>

// OpenGL / GLUT
#include <GL/gl.h>
#include <GL/glut.h>

// IFL
#include <loaders/IFLLoader.h>

// Volumizer2
#include <Volumizer2/Version.h>
#include <Volumizer2/Shape.h>
#include <Volumizer2/ShapeSet.h>
#include <Volumizer2/Geometry.h>
#include <Volumizer2/VertexArray.h>
#include <Volumizer2/StructuredHexaMesh.h>
#include <Volumizer2/Appearance.h>
#include <Volumizer2/ParameterVertexData.h>
#include <Volumizer2/ParameterLookupTable.h>
// Projected tetrahedra Render Action...
#include <Volumizer2/ClipRenderAction.h>
#include <Volumizer2/PTRenderAction.h>
#include <Volumizer2/PTLUTShader.h>
// Global variables
vzParameterLookupTable *createLUT(float* data, float r, float g, float b, 
float a);
bool drawcells = false;
vzShape *shape1 = NULL;
vzShape *shape2 = NULL;
vzShapeSet *shapeSet = NULL;
vzPTRenderAction *renderAction1 = NULL;
vzPTRenderAction *renderAction2 = NULL;
vzClipRenderAction *renderAction = NULL;
GLint viewport[4];
int lastPosition[2] = {0, 0};
float angles[2] = {0, 0}, lastAngles[2] = {0, 0};

//////////////////////// Volumizer //////////////////////////////

//  Load the volume data and initialize the shape node.
void loadVolumeData(char *fileName)
{
    // Print the volumizer version string
    cerr<<vzGetVersionString()<<endl;

    static const int dim[3] = {2,2,2};
    //data

    static float data1[8];
    for(int j = 0; j < 8; j++)
      data1[j] = j;
    static float data2[8];
    for(int j = 0; j < 8; j++)
      data2[j] = j;
    //luts
    static float lutdatargba1[64];
    static float lutdatargba2[64];
    //coords
    static float xyz1[24] = {0.0, 0.0, 0.0, 
		     1.0, 0.0, 0.0,
		     0.0, 1.0, 0.0,
		     1.0, 1.0, 0.0,
		     0.0, 0.0, 1.0, 
		     1.0, 0.0, 1.0,
		     0.0, 1.0, 1.0,
		     1.0, 1.0, 1.0};
    
    static float xyz2[24];
    for( int i = 0; i<24; i++)
      xyz2[i] = xyz1[i] +1.0; 

    vzVertexArray *vertexArray1 = new vzVertexArray(8, &xyz1[0]);
    vzVertexArray *vertexArray2 = new vzVertexArray(8, &xyz2[0]);

    static   float bbox[6], bbox1[6], bbox2[6];
    // Initialize geometry
    vzGeometry *geometry1 =  new vzStructuredHexaMesh(dim, vertexArray1);
    vzGeometry *geometry2 =  new vzStructuredHexaMesh(dim, vertexArray2);
    vertexArray1->computeBoundingBox (bbox1);
    vertexArray2->computeBoundingBox (bbox2);
    printf("bbox:\n%f %f %f, %f %f %f\n", 
	   bbox1[0], bbox1[1], bbox1[2], bbox1[3], bbox1[4], bbox1[5]);
    printf("bbox:\n%f %f %f, %f %f %f\n", 
	   bbox2[0], bbox2[1], bbox2[2], bbox2[3], bbox2[4], bbox2[5]);

    vzParameterVertexData  *volume1 = 
      new vzParameterVertexData ( 8, 1, &data1[0]);
    vzParameterVertexData  *volume2 = 
      new vzParameterVertexData ( 8, 1, &data2[0]);

    vzParameterLookupTable *lut1 = createLUT(&lutdatargba1[0], 1, 0, 0, 
0.5);
    vzParameterLookupTable *lut2 = createLUT(&lutdatargba2[0], 0, 1, 0, 
0.5);

    // Initialize appearance
    vzPTLUTShader *shader1 = new vzPTLUTShader();
    vzAppearance *appearance1 = new vzAppearance(shader1);
    vzPTLUTShader *shader2 = new vzPTLUTShader();
    vzAppearance *appearance2 = new vzAppearance(shader2);
    shader1->unref();
    shader2->unref();
    appearance1->setParameter("vertex_data", volume1);
    appearance1->setParameter("lookup_table", lut1);
    appearance2->setParameter("vertex_data", volume2);
    appearance2->setParameter("lookup_table", lut2);
    volume1->unref();
    volume2->unref();
    lut1->unref();
    lut2->unref();

    // Initialize shape node
    shape1 = new vzShape(geometry1, appearance1);
    shape2 = new vzShape(geometry2, appearance2);
    geometry1->unref();
    appearance1->unref();
    geometry2->unref();
    appearance2->unref();

    // Initialize the render action
    printf("adding shapes\n");

    shapeSet->add(shape1);
    printf("added 1-st shape\n");

    shapeSet->add(shape2);
    printf("added 2-nd shape\n");
    shape1->unref();
    shape2->unref();

    renderAction = new vzClipRenderAction();
    renderAction->setLODThreshold(1.0);
    }

// Draw the volume data
void clipRenderVolumeData()
{
   renderAction->beginDraw(0);
   renderAction->draw(shapeSet);
   renderAction->endDraw();
}


// Clean up the shape node and the render action
void cleanup()
{
  delete renderAction;
}

/////////////////////// GLUT callback functions///////////////////

// glutDisplayFunc() callback function
void display()
{
    glClear(GL_COLOR_BUFFER_BIT);
    glDisable(GL_DEPTH_TEST);

    // Viewport
    glViewport(viewport[0], viewport[1], viewport[2], viewport[3]);

    // Projection matrix
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(-1, 1, -1, 1, -1, 1);

    // Modelview matrix
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glRotated( 90 + angles[1], 1, 0, 0);
    glRotated(180 + angles[0], 0, 0, 1);
    glScalef(1.5, 1.5, 1.5);
    glTranslatef(- 0.5, - 0.5, - 0.5);

    // Enable back-to-front alpha blending
    glEnable(GL_BLEND);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

    // Render the volume data
    clipRenderVolumeData();
    glutSwapBuffers();
}

// glutKeyboardFunc() callback function
void keyboard(unsigned char key, int x, int y)
{
    switch (key) {
        case 27:
            cleanup();
            exit(0);
    }
}

// glutReshapeFunc() callback function
void reshape(int width, int height)
{

    // Update viewport
    viewport[0] = 0;     viewport[1] = 0;
    viewport[2] = width; viewport[3] = height;
    glutPostRedisplay();
}

// glutMouseFunc() callback function
void mouse(int button, int state, int x, int y)
{
    if (state == GLUT_DOWN) {
        lastPosition[0] = x;
        lastPosition[1] = y;
        lastAngles[0] = angles[0];
        lastAngles[1] = angles[1];
    }
}

// glutMotionFunc() callback function
void motion(int x, int y)
{
    angles[0] = lastAngles[0] + (lastPosition[0] - x) / 4.0;
    angles[1] = lastAngles[1] + (y - lastPosition[1]) / 4.0;
    glutPostRedisplay();
}

// main
void main(int argc, char *argv[])
{
  if(argc >2) {
    cerr<<"Usage: "<<argv[0]<<"flag[bool]"<<endl;
    cerr<<"flag=1 -> draw cells, flag=0[default] -> draw boundary"<<endl;
    exit(0);
  }
  drawcells=atoi(argv[1]);
    glutInit(&argc, argv);
    loadVolumeData(argv[1]);

    // Initialize window
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);
    glutCreateWindow("Simple Volume Viewer");

    // Initialize callbacks
    glutDisplayFunc(display);
    glutReshapeFunc(reshape);
    glutKeyboardFunc(keyboard);
    glutMouseFunc(mouse);
    glutMotionFunc(motion);
    glutMainLoop();
}

vzParameterLookupTable *createLUT(float* lutdata, float r, float g, float 
b, float a)
{
  //lutdata must be float[8], allocation and dealocation is done 
manually outside
       
  lutdata[0] = lutdata[4] = r;
  lutdata[1] = lutdata[5] = g;
  lutdata[2] = lutdata[6] = b;
  lutdata[3] = lutdata[7] = a;

  vzParameterLookupTable *lut = new vzParameterLookupTable(2, lutdata,  
VZ_FLOAT , VZ_RGBA);
  return lut;
}



      
  


From info-volumizer-owner@els.sgi.com Thu Oct 16 23:45:44 2003
Received: (from majordom@