Enabling User-Interaction in Virtual Environments for ... - Google Sites

2 downloads 201 Views 1MB Size Report
26 Oct 2005 - In partial fulfilm ent of the requirem ents of the degree of Bachelor of Inform ation Technology with H on
Enabling User-Interaction in Virtual Environments for Non-Programmers

Glen Maddern

Supervised By:

Dr. Jasmine Banks

Honours Thesis

Submitted on 26 October, 2005 to The School of Information Technology and Electrical Engineering The University of Queensland

!"#

$" %

& ' $!!(

)

'

*

+

,

'

&

,

-

, ' ,

*

, .' '

& ** *

.

1

'

2 %

3 / & $"' $!!(/

,

/

& /0 ,

& ** &

& '

Acknowledgements , ) 4 , ** *

&

,

. ' * & / 6

: *

.

.

. 8 9

* '

* 5 / 7 * 5 /

'

' 7 , /

/

> * , 8 9 7&

= 7&

' 6

' ' @ * 5 **

&

7* * ', *

& >

&

7

, * =

,

* '

=

,

/ & ,

&

,

*

**

+

*

' = =&

*

',

,

&

8 9 =*

&

=* /

7& / ,

' *

' /

'

=

/ *

>

* * ,

* 8 9 , -

,

& ,

,

/

, *

+ * &

/

, ,

=&

' /

*

**

' '

', *

Enabling User-Interaction in Virtual Environments for Non-Programmers Honours Thesis Table of Contents && ; & & B/ B/B B/$ B/C B/ B/( B/" $/

. $/B $/B/B $/B/$ $/$ $/$/B $/$/$ $/$/C $/$/ C/ 8 9 C/B C/$ C/C 8 C/ 8 C/( C/" C/# > C/E C/D C/B! / 9 /B % /B/B /B/$ /$ ) /$/B /$/$ /$/C /$/ /$/( /$/" /$/#

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// A ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// A > ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////A > ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////A > ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// B * % , ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// B ///////////////////////////////////////////////////////////////////////////////////////////////////////////// B //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// B 5 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// B 5 2 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// $ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// C //////////////////////////////////////////////////////////////////////////////////////////////////////////////// ( > /////////////////////////////////////////////////////////////////////////////////////////// ( ) //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ( > ///////////////////////////////////// # * //////////////////////////////////////////////////////////////////////////////////////////////// D A ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// D ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// D % /////////////////////////////////////////////////////////////////////////////////////////////////////////////// B! ; /////////////////////////////////////////////////////////////////////////// BB /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// BC /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// BC * //////////////////////////////////////////////////////////////////////////////////////////////////// BC * ; ///////////////////////////////////////////////////////////////////////////////////////////// B %* //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// B ///////////////////////////////////////////////////////////////////////////////////////////////////////// B( ; ; ; ////////////////////////////////////////////////////////////////////////////////////////////////////// B" 2 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// BE 7 * //////////////////////////////////////////////////////////////////////////////////////////////////////////////// BE ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// $! * /////////////////////////////////////////////////////////////////////////////////////////////////// $! ) //////////////////////////////////////////////////////////////////////////////////////////////////////////////// $C , /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// $C ) 9 ) ////////////////////////////////////////////////////////////////////////// $C 8 9 /////////////////////////////////////////////////////////////////// $C ///////////////////////////////////////////////////////////////////////////////////////// $ 8 , 3 //////////////////////////////////////////////////////////////////////////////////////////// $ = =3 ///////////////////////////////////////////////////////////////////////////////////////////////////// $ 8 ///////////////////////////////////////////////////////////////////////////////////////////////// $( ///////////////////////////////////////////////////////////////////////////////////////////////////////////// $" /////////////////////////////////////////////////////////////////////////////////////////////////////////////// $# ) ////////////////////////////////////////////////////////////////////////////////////////////////////// $# 9 * /////////////////////////////////////////////////////////////////////////////////////////////////////// $D

/$/E /C /C/B /C/$ /C/C /C/ /C/( /C/" / (/

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////// C! ) /////////////////////////////////////////////////////////////////////////////////// C! ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// C! %* ) ////////////////////////////////////////////////////////////////////////////////////////////// C! 0 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// CB 8 ////////////////////////////////////////////////////////////////////////////////////////////////////////////// C$ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// C" 9 //////////////////////////////////////////////////////////////////////////////////////////////////////////////// C# * ////////////////////////////////////////////////////////////////////////////////////////////// CD 8 9 ///////////////////////////////////////////////////////////////////////////////////////////////// B , /////////////////////////////////////////////////////////////////////////////////////////////////// B 3 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// B 8 = * ) //////////////////////////////////////////////////////////////////////////////////////////////// $ 7 3 ///////////////////////////////////////////////////////////////////////////////////////////////// $ 7 7 * //////////////////////////////////////////////////////////////////////////////////////////////////// C //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// " 8% 8 /////////////////////////////////////////////////////////////////////////////////////////////////// " 4 * //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// D 3 > ,* //////////////////////////////////////////////////////////////////////// (! 3 * //////////////////////////////////////////////////////////////////////////////////////////////////////////////// (! 3 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// (! * ////////////////////////////////////////////////////////////////////////////////////////// (! * ) /////////////////////////////////////////////////////////////////////////////////////////////// (B /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// (C ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// (C ; ////////////////////////////////////////////////////////////////////////////////////////////////////////////// (C 9 //////////////////////////////////////////////////////////////////////////////////////////////////// (( 9 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// (" 3 //////////////////////////////////////////////////////////////////////////////////////////////////////////// (" , 3 * /////////////////////////////////////////////// (" //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// (# 3 8 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// (# * //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// (# % &5 /////////////////////////////////////////////////////////////////////////////////////////////////////// (E 2 3 8 /////////////////////////////////////////////////////////////////////////////////////////// (D 3 8 ///////////////////////////////////////////////////////////////////////////////////////// "! 7 * /////////////////////////////////////////////////////////////////////////////////////////////////////////// "! * ///////////////////////////////////////////////////////////////////////////////////////////////////////// "$ ; /////////////////////////////////////////////////////////////////////// "$ & ; //////////////////////////////////////////////////////////////////////////////////////// "( * 3 8 * ///////////////////////////////////////////////// "# * 7 8 //////////////////////////////////////////////////////////////////////////////// "D ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// "D , /////////////////////////////////////////////////////////////////////////////////////////// "D ; =% //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #! = ////////////////////////////////////////////////////////////////////////////////////////////// #! /////////////////////////////////////////////////////////////////////////////////////////////// #! > ; & . ) ////////////////////////////////////////////////////////////////////////////////// #! > 2) * ///////////////////////////////////////////////////////////////////////////////////////////////// #B 8 9 7 //////////////////////////////////////////////////////////////////////////////////////////////// #B 3 9 8 ////////////////////////////////////////////////////////////////////////////////////////////////// #B = 7 8 ////////////////////////////////////////////////////////////////////////////////////////////////// #$ 8 9

; (/B (/B/B (/B/$ (/B/C (/B/ (/B/( (/$ (/C (/ (/ /B (/ /$ (/ /C (/ /

"/ "/B "/B/B "/B/$ "/$ "/$/B "/$/$ #/ ; #/B #/B/B #/B/$ #/B/C #/B/ #/B/( #/$ #/$/B #/$/$ #/$/C #/$/ #/$/( #/C #/C/B #/C/$ #/C/C #/C/ #/C/( #/ #/ /B #/ /$

*

#/ /C . 8 ////////////////////////////////////////////////////////////////////////////////////////////////////// #$ #/( 9 = ) 7 ////////////////////////////////////////////////////////////////////////////////// #$ #/(/B * 3 //////////////////////////////////////////////////////////////////////////////////////////////////////// #$ #/(/$ 4 3 ///////////////////////////////////////////////////////////////////////////////////////////////////////// #$ #/(/C % &5 = 3 //////////////////////////////////////////////////////////////////////////////////////////////// #C E/ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #( E/B * /////////////////////////////////////////////////////////////////////////////////////////////////// #( E/$ 5 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #" E/C ; & /////////////////////////////////////////////////////////////////////////////////////////////////////////// #" D/ & * /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #D

List of Abbreviations F F

*

3

**

/

/

F /

>

F)

'

F

/ &

, G

=

/

* /

9

/

,

=&

/ ! **

F

8

, ,

* 5 / : >

7* /

* &

"# F % * & /

6

,

)

*

*

=

=

) &

9

/

,

*

&

,

8 9

/

/

& . &

* &

*

: / '

F > ' , &

=&

/

2 * /

%F

F>

&

/

" F%* ) 8 9 6 *

&

/ *

$!! /

F

# $F

9

/

,

,

* *

8 9 *

List of Figures ;

$/B = ' , & / * * ////////////////////////////////////////////////////////////////// " ; $/$ = , H 6 /8 * * = * &5 ' & * / ////////////////////////////////////// # ; $/C = ' I$J//////////////////////////// E ; $/ = ' * / //////////////// B! ; C/B F *& , * ? @ * ? @/ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// BC ; C/$ F =3 * / ////////// B" ; C/C F 7 * ; //////////////////////////////////////////////////////////////////////////////////////////////////// B# ; C/ = * / /////////////////////////////////////////////////////////////////////////////// BD ; C/( F * ' * , * / /////////////////////////////////////////// BD ; C/" F * , * ; C/C/ ///////////////////////////////// $! ; /B F * 7 * * 0 /////////////////////////////////////////////// CB ; /$ F 7 * ; 0 / ////////////////////////////////////////////////////////////////// C$ ; /C F 7 * ; / //////////////////////////////////////////////////////////////////// CC ; / F ; * / /////////////////////////////////////////////////////////////////////// C ; /( F 7 * ; 7 / /////////////////////////////////////////////////////////////////////// C( ; /" F 7 * ; 3 / //////////////////////////////////////////////////////////////////// C" ; /# F * / /////////////////////////////////////////////////////////////////////////////// C" ; /E F * ; / ////////////////////////////////////////////////////////////////////// C# ; /D F 3 * & & * * 7& / // C# ; /B! F * 9 ; /////////////////////////////////////////////////////////////////// CE ; /BB F 9 / ////////////////////////////////////////////// CE ; (/B F * 7 * , ////////////////////////////////////////////////////////// B ; (/$ F + , & /////////////////////////////////////////// $ ; (/C F 7 * ; ButtonBoxTrigger/ ///////////////////////////// C ; (/ F ButtonBoxTrigger ///////////////////////////////////////////////////////////////// ; (/( F 7* 6 ParseTrigger /////////////////////////////////////////////////// ( ; (/" F ButtonBoxTrigger--update ///////////////////////////////////////////////////////////// " ; (/# F 8% 8 ; * / ////////////////////////////////////////////////////// # ; (/E F & 8% , * * , / ////////////////////////// # ; (/D F 7 * 8% 8 / ///////////////////////////////////////////////////////////////////////////////// E ; (/B! F + 7 * ' A% 9 / ////////////////////////////////////////////////////////// E ; "/B F H2 6 * 6 //////////////////////////////////////////////////////////////////////////////////////// ( ; "/$ F H 6 * * , / //////////////////////////////////////////////////////////////////////////// ( ; #/B F 7 * * ///////////////////////////////////////////////// (# ; #/$ F 9 @/

, ' ' ' C) >9 * .

*

* *

* **

*

*

&

* /

7

* + / &

8 9

&

'

/

1.2 Intended Audience * / ,

&

,

, * 5

,

= * 5

/ * >

*

* 9

. , *

/ , .

&

. *

*

&

' 7 * ,

&

/

@ I$J * * =* *

,

', .

*

*

,

@IJ , , /

*

8 9 ,

F *

'

* >

/ *

>

?>

&

& ,

*

'

*

*

> 9/ '

/

ICJ * 5 6 , .

,

& , '

, / ;

H > 6/ & ' '

& H > 6,

1.4 Project History * 5 * &

3

, *

,

? 3 $!!C & ,

,

> / *

3 *

, .& @

? 3 '

I(J/

5

@/

'

&

: *

, *

7

'

,

*

,

,

* 5

.

$!! /

7

&

, * 5 , '

/ '

/

'

5

* * &

I"J F

* ) 4

, .

. 8 , .

4 *

H 5 ',

>

&

,

* ',

*

6

* 5 8 C/

H *

7*

, 6

&

*

&

H * , , /

' &

)

*

$!! =(' *

' * ,

&

&

'

* ,

*

8 9 6 * & / 8 9

,

' 7 , .

$!!( =

&

,

,

/ &

5 &

' * *

* *

*

*

* /

6/

' * 5

& '

/

*

' * *

$!! / 9

=* * =&

'

=* 7*

= ,

,

&

' & &

/

&

** *

'

'* H

& & *

. &

& ,

,

/

&

8 9

'

,

=

&5 ' &

* ,

6'

/

&

**

8 9

*

'

&

, . , .

3 $!!B=!C' **

' / ;

' '

* *

6/

& =

. F, *

, , 8 9

* *

'

*

'

'

/ * *

*

>

* 7 ,

*

=

I#J/

1.5 Project Goals ;

'

,

= . * * *

= IB!J 7* 6

* 5 * , % 29

& &

* & ,

, IEJ'

* ' = *

/ ;

'

&

* & & /; 2 * IDJ' & +

%*

/ *

' 7

& + /

* ' & *'

*

'

C) *

'& * . &

=

+

' ,

/

'

* *

*

=

8 9 *

'

* &

7 * 5

*

* ' & *

* *

& * =&

&

6

=

&

* = *

&

* * ,

/ 7&

/ * 5 '

,

C' 8 9

* /

*

%

/

* *

* .

' &

=

' *

8 9 &

* *

& /

.

/ ,

* 5

=

/

,

0 8 9

& & &

@'

%' IBCJ & & * * ' * & , * = = / = * .

&

, ,

*

, '

/

& ,

*

& =

&

* . =

*

'

= *

* *

C) *

* , /

* /

? *

=

IB$J

**

* .

9

! " IBBJ' #$ ! &

'

*

7

&

*

* *

&

8 9

=

&

/

1.6 Thesis Structure * *

,

, ,

&

' **

, . * 8 9 *

&

>

, &

/

,

+

*

/ *

.

/ & ' , *

'

'

* * 5 /

;

=& 8 9

* ; ,

/

& .

,

5 '

,* *

',

7

&

8% *

8

' *

'4 &5 ,

& /

& *

/ ,

*

/

* *

7 * 5 /

'

,

*

' &

* * 5

*

*

8 9 *

/

'

2. Background Literature > 96

&

=* H *6 & , , I$J/ , * 7* /

/ *F *

.

* & *

7

,

'

7

,*

*

,

&

H

*6

7

*

& +

,

/ =&

=* / 6 ! " IBBJ *

,

* *

& 0 +

, . &

& 6 &

*

IB J

&

&

' * C) &

*

& '

*

'

,

.

+

,

/

,

>9

&

&

>

&

F*

*

*

/

2.1 Artistic Virtual Environments ,

* )

>

*

'

, .

'

/

2.1.1 Char Davies % , .

*

, .

= = , &

7

=. , , . , .' ' * * 6 &

*

>9 , *

IB(J BDD(' * ,

.

&

*

) I$' CJ/

&

& ., &

/ /

'

'

& &

IB(J/ 7

* -

' ,

/

& *

* / $!'!!!

*

IB"J

F 5

>9

&

* ' ?

;

' $/B@/

H,

6

'

()* =

'

,

*

IB"J' ' /

*

&

/

*

/

BDDE'

,

& &

& ?

, .

. ,

* 7 *

* /%

,

& &

* , ;

& '

& $/$@/

&

*

' ',

'

* )

, .

' , IB(' B"J/

*

' ,

'

()( = , H

6 *

/8 &5

*

' &

*

*

=

/

2.1.2 A Course in the Creation of Artistic Virtual Environments 7* ,

2 , . *

, %

'

'

&

> *

%

>

,

*

*

*

=

** & .

' , * /0 * / * ,

,

&

&

. , 6

&

' * '

*

,

& ' * *

* *

& &

&

*

*

/ *

@

*

*

&

'

% *

* &

, .* /

' &

'

, . ' . '*

I$J/

,

'

* & .

/

, ? , ? ; /

$/C@/

, > /

& *

,

&

&

* &

/ & ,

'

()+ =

'

I$J/

2.2 Past Attempts at Solutions &

* , . ' ,

'

*

*

=* *

*

, * 5 / %

* &

* 5 '

'

/

2.2.1 XP %

*

, >

' ! '! ( ) , ' %& IB#J/ , .& , *

' ,

* *

* * *

&

=& &5 &5 K + ' K ,- ' , K & G & , / *

*

& ,

-

&

/ , 7

/ .

' A

7 *

'

*

,

* *

/ &

*

* K

$' , 7

*

&

7 *

, *

7 .

* '

C)

& , *

& * * , ,

*

' &

!

.

* & * '

' *

/

*/

*

. &5 ' ', .

* '

&

6 +

/

IB#J/

2.2.2 SE . IBEJ : / &

&

*

3 3

' , *

=

.2 =

?BC , . @ > /

,

* *

+

',

*

7

'

,

= &5 ** , & = &5

, &5

&

+ , * ,

/

,

*

7*

& * 7 &

= ' @'

, *

*

, , . ', /

*

/ *

* * 7 ' * , * & & 2 &

,

&5 ' * /

& *

/

IBEJ/ % &

. / *

* / 3

?

/ . *

*

+

* /

* '

*

&

&

/ 7

*

, '

'

2.2.3 Other Systems &

* *

% = * /

IBDJ/ % ' & ' ,

*

,

*

/ '

* *

*

* '

'

*

*

*

*

*

,

'

*

'3

& / ,

& 011# IB!J / , * = = * '*

'

'

(), =

= /

*

I$!' $BJ/ 7 +

*

F

* *

%* * & ,

2 =& '

C)

* * *

, * +

'

*

?

;

/ * / 8

* ' $/ @/

/

2.2.4 Common Features and Limitations &

&

*

'

/;

'

=

=*

* , ' *& 9

,

*

&

& /

&

>

=

* 7 &

** '

/

'

** *

, '

*

'

& ,

IB J

& * *

! " IBBJ ' *

C) >

&

'*

, ,

&

/ /

/ ' ,

,

'

&

&



*

H

6,

* •

*

*

* ' *

'

* 7 &

&5 IBEJ/

' • + ,

* IB#' BEJ@

'

?,

&

,

'

& 5 * /

*

.

*

*

& /

' * 7

= 8 9

/

,

*

, '

*

IB#J'

* *

&



, ,

'

-

,

/ IBDJ' /

'

7

'

3. INTRAC *

7*

8 9

*

&

ICJ

'

,

* 5 /

3.1 Basic Structure 8 9 , &

* =&

*

/ . '

'

' *

*

/ *

*

/

,

'

+ ,

*

'

* & *

*

'

F* &5

=

*

'

, , =

IB#J' & & ,

8 9

F

*

;

C/B/

&

* *

*

+)* F

*& ,

* ?

* =& *

/

@

* ?

@/

3.2 Activation Propagation * * & &

, * &

'

+

,

*

*

' &

*

/ /

& $

B

*

B

&

, * /

,

&

* '

' ?

, /

7

* *

?

* @' & 7 * '

8)

@/

, &

/) *

&

* * $ , $ , F *

/

& ,

'

C/ /

.

* * H = ,

6

** * *

/

3.3 Node Types and Functions 8 9

*

,

F

* B/

* *

$ F

&

*

** '

* $/

& ,

' &

/% , ' * I$' B#' BEJ' & * ' .+ * * 8

&

*

6

$ , $

.

*

+ $ 2

/

&

*

&

/

' $

. *

$

" '

* * * 8 A% 9/

/

* =&

*

* ' * '& * * &

* *

8) ' % 9 * 7

&

* , * &5 /

$

&

,

'

,

* *

/

& *

'

& *

,

/

& ' * *, & 6 *

&

*

C/

* *

' '

$ ' / ; +

* * '

* /

& = =

$ ',

$

&

/

$',

2

*

8

/

& /

3.4 Node Options *

, * *

7

',

;

*

' * *

** *

&

&

* &

/ &

*

& *

, /

& ' , & 7* *

/

'&

/ '&

H ,

6

* &

/ ' *

& /

&

, '

, &

*

, * &

&

&

+

&

& '

&

/

' '

,

'

*

/ '

7

/0

/0

H

7 * *

6

* * /0

& ' /

& @' ,

&

& &

&

' =

=

&

* * ?,

/ '

* / 7*

$

?/ /

, B

$

& ,

,

/ @'

/

3.5 Activation Handling &

= ?) *

*

* 2@/

. =,

) 2 ? @/ 8

*

& * )

$

, ,

* *

' &

' / &

=

' ',

* *

&

8

*

F

* *

'

'

H

=*

6

/

* /8 & , * &

& ?

&

* & * * *

.

, ' 6

/; @' 8 *

/ & &

9

&

?*

' , *

8

'

'

'

8

' '

/

= /

/ 8

7*

* *

'

@/

8 *

& , '

. *

F

$

* **

7 H

/

'

'

-

/

&

* *

* * & * * + / * * *

' * * * '

8

'

&

* =

C/

6

/

*

$/

H

F

*

, *

B

2

* 7/

/ =* *

B/

= /

&

&

& 8 9

/ , * &

=.

' @

&

* * &

* F ?

*

* 6 ;

8 * '

&

7

C/$/

.F

*

/

'

+)( F

=3

*

* & &

* = /

' &

*

,

7

,

& &

&

* & . /

+

=

F

& ,

/

'

H

'

6

, ,

, ,

' * 6 I$$J + ,

H

*

&

'

/

, 8

* , ,

*

& ,

/

,

.

'

/

F

& '

.

'

*

'

'

&

' &

,

+

&

/

3.6 The FLCL File Format 0

8 9

'

3

**

/ *

*

;

/

*

"2

" ICJ

F

7

= &

*

/ ;

C/C

,

*

'



& 8 9 *

= 3 * * &

7

/ 8 /;

* ?

*

&

'

*

7* * ' ,

7

& , * #/(/B/

& ,

3

'& '

*

/ ,

%)

*

* 7/ & * & * /9 *

', &

/

7 ,

3

*

' **

3

* '

*

&

;

' ,

.

&

*

%)

&5 = ' .

/ ;

'

@ ?*

' & 7 @/

3

& /

'

,

'

&

4.3.5 PhysTrigger &

8

/ &

,

*

7 '

'

,)0 F

*

& ,

/ ;

/#/

/

;

7

*

+

* '

,

;

/E/

PHYST[ TARGET: Sphere1 THRESHOLD: 100 BTRIGGER[ OBSERVERS[ PhysT1 T BounceSound T ] BINTRAC[ RESET: T START: T GROUP[ NAME: PhysT1 ] ] ] ] '

,

8 9 * 7

,)1 F

*

;

/

'

&

/ &

&

& '

* /D/

;

&

&

&

,

. '

! " #

) * ! " ##

! ,-

! " ###

! $ . ! $ .

)

!

! ,-

+ $

% &

' '

' '

,)2 F 3

*

&

' &

H G

= G

* 7 &

&

&

*

**

/ &

6& /

,

' &

%

( * 7&

*

* * '

* *

,

/

* 7

/

4.3.6 PhysReaction *

& '

& * 5 F , .,

/

*

* '

. 9 '

7& * 8 9

&

*

= =&

* &

/

9 &

/ " / ; *

& , ' $/ 7 * ' ;

.

F

, &

9 *

'

+ 7

;

"

* , *

*

> 8 9

*

*

/B!/

PHYSR[ SPHERE[ NAME: Sphere1 POS: [ 0.0 0.0 5.0 ] ] BREACTION[ SRESET: T BINTRAC[ RESET: T GROUP[ NAME: ResetSphere ] ] ] ] '

,)*3F

*

9

' H *

H9

B6

*

/ *

* *

7

* *

'

* &

6

.

&

H

/ 6& ,

/

=& ' *

* "

9

&

/

'

&

'

;

ICJ ,

*

* #/B/

*

'

8 * *

,)** F

&

*

@&

;

, 7

*

8 9 ?

& @/

9

'

, 9

6

/

6 ;

?,

7 * * * AUTOSTART[

' . &

; *

6 &

*

: 4

* /

/)/

4.4 Implementation Summary & *

/B

* ,

*

& 7

/ ; /)/

4

56

*

'

*

* '

/

0

'

;

* /

/ * ,

'

*

;

*

/

*

/ 7*

*

*

/

;

* /

7

*

7* *

3

*

*

, *

*

*

*

& * &

/

* 7

;

* *

,

*

/

7

)

; /

7*

& )

& 7=

/

* /

/

*

& 7

;

7/

* /

/ ,

&

;

9

* &

7

&

=

/

!

,)* F

;

* /

*

* ,

* /

/

/

&

*

/

5. Further Additions to INTRAC * * 5

& F

, ,

7

* '

*

8%

8

;

'

& ,

,*

*

&5

/

5.1 Hardware Interface API % * = *

ICJ *' *

* *

H * *

6' , /

&

* 7

* 5

, '

,

* * / ** *

/

5.1.1 Motivation *

& ,

**

*

/; , '

'

& %*

/ 2 *

%* *

*

) ' 7

, & ,

* 5 = @ ,

*

* * &

' *

&

;

* *

' ICJ

.

,

& /

, ** *

' *

'

& * &

&

8 9

. '

8 9

'

=

& /

,

* *

' ,

, *

' &

?* * * &

*

&

8 9

' 8 9

'

* /

&

&

, > /

, * /

,

* ' 8 9

*

7 * *

* ,

*

*

F

*

*

*

/

*

&

* *

* , **

*

?/ / @' *

*

,

/

*

/

* )

% /

! $ .

/

'

-)* F

0 0 0 * 1'

%

*

(

7

*

,

/

5.1.2 Node-Type Derivation 7 *

/

, * ' . , /

* *

F ,

*

&

' & *

,

7* *

&

* '

* 8 9 * , *

** * /

&

8 9 ,

*

'

*

,

*

7

*

*

/

B

-

extern "C" __declspec(dllexport) intrac::BaseTrigger* ParseTrigger( vector::iterator input, vector::iterator EOF ); extern "C" __declspec(dllexport) BaseReaction* ParseReaction( vector::iterator input, vector::iterator EOF ); extern "C" __declspec(dllexport) BaseConditional* ParseConditional( vector::iterator input, vector::iterator EOF );

'

0

-)( F

+

' input' * ' , & * & *

* '

,

,

&

&

/

*

.

;

7

/0

.

HJ6

/ *

* &5 ** *

&5 ** * * ' / ; * BaseTriggerGReactionGConditional/ ,

* ' .

,

/

5.1.3 Extension Mechanism ?H/ ;

, 6 /

= * 0 ;

& , *

*

* 7@

H/ 6 7

*

G addInstruction ( intrac::UnaryInstruction< intrac::PhysSphere, void, osg::Vec3& >( intrac::PhysSphere::setRadius, parseVec3 () ) ); } else if ( read() == "RADIUS:" ) { incPos(); node->addInstruction ( intrac::UnaryInstruction< intrac::PhysSphere, void, dReal >( intrac::PhysSphere::setRadius, parseFloat() ) ); incPos(); } else if (...) { . . . } else incPos(); } incPos(); } else if (...) { . . . } else incPos(); } if ( notEOF() ) incPos(); else printMessage( "Unexpected end of file!" ); } '

* ,

parsePhysicsR

0)*. F

' ,

* '

,

' &

+

/

;

parseMessageNode & /; '

/

, &

, %

& *

*& ;

;

*

/

#/B#/

osg::ref_ptr PhysSphere::getInstruction( Serialiser& s) { osg::ref_ptr result; if (s.read() == "RADIUS:") { s.incPos(); result = new UnaryInstruction< PhysSphere, void, dReal >( PhysSphere::setRadius, parseFloat() ) ); } else if (s.read() == "POS:") { s.incPos(); result = new UnaryInstruction( PhysSphere::setPos, s.parseVec3() ); } else if (...) { . . . } return result; } '

0)*0 F

0

3

8

(

getInstruction

* *

! A

6 ; / *

& ,

*

' ** * '*

' .

*

/

* getInstruction &5 /

' read getInstruction & ; #/BE/

* /

'

/

&

getInstruction + &

read

void PhysBox::read( Serialiser& s ) { while (s.read() != "]") { osg::ref_ptr inst = getInstruction(s); if (inst.valid()) inst->execute(this); else s.incPos(); } s.incPos(); } '

0)*1 F

read

read

* *

*

' read

* incPos &5 /

/

&5

** *

getInstruction

'

'

/ G *

' = G

/ /;

'

&5 getInstruction read

'

., .

,

,

7.2.4 Implications for External Nodes , + Serialiser & ReaderWriterFLCL &5 , osgDB::ReaderWriter' , 7*

*

, * 8 9 / intrac::Serialiser ; , 7 7 &

' ' & * HLOADLIBRARY[ FILENAME ]6/ 7 ** * & ' (/B/ , ' & , 8 9 / % 7 7 / & /

'

*

, '

'

& 8 9

& 9

/

&

, ;

,

'

&

&

*

/

&

; ; *

, '

9 ' *

' F&

,

, 9

;

&

, & ;

9

8 9

7

*

*

*

'

/

7.2.5 Conclusions *

; & . * , ** * * 7 '& , * ' * * ' . *

,

* /

, ;

'

=*

& *

7

, '

* '*

= .

/ '

F& =, . , /

7 =* /

& *

*

/;

& &

9 6 *

. *

, 7

,

* *

* 5 *

7.3 Integration with an Interface *

&

7*

'& / +

' '

*

* * 5 * '* , * &

/

** * 5

, *

& $

& , &

= *

'

& ,

& & 8 9

/ ,

*

'& ,

/

,

&

/

'

&

' /

'

'

*

/ &

6

,

7.3.1 FLCL-Only 0

' *

8 9

** +

'

;

' *

=& / * 5 '

* *

&

&

+ *

=

*

7

'

+

/

& ,

&

./

7.3.2 A Stand-Alone Interface *

'

' ,

/ * *

6 * * =

* * ', &

; &

,

/

*

&

&

*

,

*

/ 7

'

, *

*

/ * 5 /

7.3.3 An Integrated Interface *

& ,

0

&

*

8 9 ,

'

, ?

* , ' ,

'

,

, 6

*

*

, , @'

/ ,

,

, /

+

,

6/

*

* /

&

F

,

.

&

, 6

, /

& * * &

'

** *

, .

& & &

*

&

/ * 5 6

* 5 ' ,

* *

/

/

' *

&

*

/ ,

,

&

&

,

'

/ %

7 /

7.3.4 Visual Feedback for Designing * )

= *

* *

* 5

& &

, &

&

+ /

6 ' * / 2 &5 . * .

&

'

'



,

/

. =

& &

'

', &5 '

. .

, '

/ &

/ &5 , , /

* &



H

6' &5 / ' ,

'

&5

,

,

* .

*

, = *

'

/ ,

/



*

&

* 7

/ >

2/ & ' > 2 , 6 * @'

/ & . ,* / ;

&5 * ',

8 9 *

' ' +

&

7

+

&

,

' ?

'

&

*

& &

*

*

, 7 &

'

* / %&

&5 / '

. & *

* . *

/

6

7

&

&

*

&

* ,

'

,

*

'

/

7.3.5 VEBUG Development &

, /

*

* *

*

&

'

7* *

&

'

*

+

*

>

2

/ , * /

*

.

7* &

* ', & &

, * /

& .

, .

, & .'

' =

'

&

8 9

8 9

,

,

/% ,

7.4 Core INTRAC Extensions 8 9 * *

'

ICJ'

/ '& '

& ',

* *

,

&

& &

*

/

7.4.1 Movie Reaction Node 3 8 9 &

** 6

, *

, / * '

& %*

+

&

* 5

&

*

** , IC(J F /

% 7

A 7*

*

,

2 * **

' &

& ' /

**

0

% 2

0 7

, * , % 2 &

,

& 7*

*

*

=

, /

7

*

'

% 2 ** IDJ/

'

& .

&

F

* /

8 9

&

=*

7

'

.

& *

/

&

&

& & , .

&5

* 5 /

7.4.2 Hit-Box Trigger Node , &

7

* &

* 7

?* .

@/ 0

,

'

=& *

*

* ** ,

7

'

&

**

/ 8 9

6

'

6

=&

,' ,

&

/

7.4.3 Click Trigger Node * 6

*

ICJ

.

=

.

= *

'

*

,

&

/

' #/C/('

*

? '

+ *

* ,

* & *

, .=

& .

/

' .

> =

2

@/

/

7.5 Rigid-Body Dynamics Extensions 8 9 %) 7

6

=&

+

, /

&

&

'

*

'&

*

*

&

7.5.1 Simplified Meshes * * 7 /

* ' , ,

' *

* 7 / ' , =

&5 *

& *

*

&

& '

*

*

&

'

=

=

,

&5

@/

& & /

6

* ,

*

? *

3

*

/ ,

% 2*

* '

=

&

'

& 7

7.5.2 Joints and Motors %)

*

7 ** / 8 9 & & H* 6 &5

* /4 '&

5 * ,

3 * /

*

,

*

&

+ F

5 '

= , '* *

* '

& , ,

, * 7 &5

& &

& & *

/ ; ,

/ 7

* ' /

7.5.3 Object-Level Materials ' , *

'

*

,

& * 8

+ ,

&5 ' '

* & '

, , ** *

*/ '

&

*

&

&

0 *

/ %) , & /

8. Conclusions * ,

*

'

*

'

&

* 5

/

8.1 State of Implementation ! 0

/

'

8

&

,

&

*

;

* *

*

/

/

& / 7

,

8

,

=

7

7

8

' &

,

,

&5

.

*

/

8

*

/

*

/

/

*

* ,

*

.

'

;

7

/

7

* /

/ ,

8

8 L

/

8

8

* /

,

& 7

* .

;

/

&

8

:

*

&5

*

*

8

&

* *

, /

,

&

;

*

/

/

/

* *

8) 8

/

,

&

;

*

/

%9

*

/

*

/ ;

&

*

8

/

A% 9

,

8

,

&

;

*

/

/ ;

8

&

*

/

/

8%

;

8

&

*

/

/

/ 9

*

8 , 8

*

/ 9 9

8

'

0 ,

* &

' 7

* *

&

, /

,

&5

* /

&

, &

/

;

/

/

*

/ 7*

/

3

7

*

/

8

*

/

8 9

* &

7

&

=

;

*

/

/

56

/

0

'

;

*

/

/ *

,

'

*

;

*

/

*

/ 7*

*

*

/

;

* /

7

*

7* *

3

;

& 7=

*

*

/ 7*

&

!

*

/ *

*

*

&

/

* &

1)* F

*

/

8 9

8.2 Project Success * 5

*

, &5 ' ,

* &

,

8 9 .

' *

5

,

,*

&

/

,

& * '

*

, /

+ *

'

' &

, =

'

,

**

*

' ,

*

&

/

& , * 7 , =&

,' ' ,

/ *

, *

/ 7*

= , ICJ/ 3

*

'

=& &

' +

, * F . , 8 9

*

*

' /

*

&

*

*

&

* 5

' *

F

& &

*

,

6 ,

'

7*

&

'

+ *

=&

/

, ,

*

7*

,

F

& & *

& '

& , *

/

8.3 Future Possibilities * 5 & ** 8 9

& *

=

/

8 9

'

*

' / & * ' ,

, /

,

' ,

*

, *

, *

&

'

=*

, & * ,

, +

*

/

,

'

+

& , '

/ '

;

&

/ #/C'

=

*

* K

&

*

, / % '

8 9

,

K

' K

& *

, *

*

*

* , & .

>

/

* *

'

9. Bibliography IBJ

%/2

'

I$J

2/0 / Q >

I(J

'= '

/)

4/ R

. ' 2/

' :/ '

IEJ

/

'R

IDJ

9/ %

' R% *

* 2

IBBJ

0

IB$J ,

IB J

IB"J

IB#J

'

' $!!C/

'

' *

+ )

*-GG,,,/ *

* /

G/

& / C!BDD"' **/ $(=$E/

>

9

4/ 'RB

'R$!!(K

*-GG,,,/

'R$!!(K

C /

G/

$!!C'R $!!C/ #'R$!!(/

3 7 E'R$!!(/

'R

#/B'R$!!(/ *

$'R$!!(/

4/ 'R.

' R%

-

&C 2

* ' / *-GG,,,/

IBEJ

0 &

/) 'R * U V * 'R * 2 BD"=$!B/ )/

D

' /1 , ' / * > / $#' 4 ' $!! ' **/ B=BB/

2 * 0 &

' R3

/) 9

') */

/

% 29

& 'R

IB(J

*

% $!!(K / */

T

'R

.' RC

IBCJ

'R

' $!!C/

' ' $!! /

'3

,' $!!(/

IB!J

-3

2 ' 8 ' $!!B/

'R*

% G

/

$2 3 /

&

3

.

I#J

" '

*

; /+ /

*-GG,,,/ I"J

$"

' R> 9 - : >

'3 S-

= '

'3

R

&

0

*

:/ 3

IJ

) / / & ' R0 'R*

=9

* ICJ

'

A3

' 4/ /

3 /2 'R , * 3 4 * ' $!!C/

, '

* ' ' 9/

'&

' '

'3 /9 ' 7 & 'RBDDEK / G* * G* * G7*/

> / 7

/) ;

'

>

. ' BDDD' **/

' RA -

DEG/

> *

:-

9

,

* '%

'R . '

IBDJ

Q/

. ' 2/ 3

' *

' I$!J

I$BJ

3 / * *+

/

/ / / $!/

I$"J

/:

I$#J

/

I$EJ

'! $

:/

. 'R

-

/ . 'R BB=BE/

ICBJ

9/

IC$J

R

ICCJ

)/9 & 0

'

2 '

'R

%*

/9 / RA

)

'R

=

'8 ,1

.- 4

'R &

*' R

& 'R$!!(K

*-GG7

$!!(K

*-GG

/ C' BDD"' **/ B =$$/ '

G/

/ ' BDD#' **/

'

/

/ ' BDD#' **/

G/

*-GG,,,/

/ QX ' /9

'R +/

' BDDD/

' $!!(/

'R$!!(K

;

/ C' BDD"' **/ B$=

0

=

')/3 ' ' / C' 9 / 3

' BDDD/

=

'R

%

/;

'

'R

*

' $!!C/

'

=

0 &

. ')/ W *& = ' BDDE' **/ $DC=CB$/

5

.- 0 /

-

9

$'

:

'8 ,1

'

C-

"

'3 / /9 ' >9 'R $ / 8 , 1 .'

-3

)

* '0 /

'

'R

=

,

$$

!

'

-

'3 / / * !

*

8 7 ;

$

/ . 'R B(=$"/

IC!J

IC(J

B-

$-

'

' 3 /4/ . -

$

'

/

&

& "

* .

L ' $

'>

3 / / 'R $ * 2! " 3 ' $!!C' **/ B!!=B!#/

-

. '

'

* $

2??$ A '' $!!B/

. 'R

I$DJ

IC J

=0

'& "

' &

' / ' / ' R8 , , , :0 2! ' $!! ' **/ E!=E#/

--

= 'R* 9

'> ' $!!C/

'R . '4 *

"/ %

$

*

. 'R

' 4/= /

)/ / &

I$ J I$(J

LL ' /

7 '3

2 *

, '

3 / LL ' 4/= / / ' /8 & $ * 81 ' 3

I$$J

I$CJ

*

/

2??

/ 'R '3

'

G/ L 'R

-

/ B!' BDDD/

=