#VRML V2.0 utf8
PROTO Planet [ field SFColor color .9 .8 .5 field SFFloat radius 1 field SFVec3f position 0 0 0 ] {
Transform {
translation IS position
children Shape {
appearance Appearance { material Material { diffuseColor IS color } }
geometry Sphere { radius IS radius }
}
}
}
DEF Planet_0 Transform { translation 0 0 0 children Planet { } }
DEF Planet_1 Transform { translation 3 0 0 children Planet { color .9 .7 .3 radius .3 } }
DEF Planet_2 Transform { translation 1 2 0 children Planet { color .4 .7 .9 radius .4 } }
NavigationInfo { type "EXAMINE" }
DEF Sizer Script {
eventIn SFTime startMoving
eventOut SFVec3f scale
field MFNode planet [ USE Planet_0 USE Planet_1 USE Planet_2 ]
field MFVec3f pos [ 0 0 0, 1 0 0, 0 2 3 ]
field MFVec3f dir [ 0 0 0, 0 0 0, 0 0 0 ]
field MFFloat rad [ 100, 1, 5 ]
url "java script:
function startMoving() {
var x,y,z, x1,y1,z1, x2,y2,z2;
for(i = 0; i < pos.length; i ++) {
s = planet; x2 = s.translation.x; y2 = s.translation.y; z2 = s.translation.z;
for(j = 0; j < pos.length; j ++) {
if(j != i) {
m = planet[j]; x1 = m.translation.x; y1 = m.translation.y; z1 = m.translation.z;
x = x2 - x1; y = y2 - y1; z = z2 - z1;
d = Math.sqrt(x * x + y * y + z * z)*25*rad[j]+.1;
dir[j].x += x / d; dir[j].y += y / d; dir[j].z += z / d;
}
}
}
for(i = 0; i < pos.length; i ++) {
p = planet;
p.translation.x += dir.x; p.translation.y += dir.y; p.translation.z += dir.z;
}
}"
}
DEF Ticker TimeSensor {
cycleInterval .5
loop TRUE
enabled TRUE
}
ROUTE Ticker.cycleTime TO Sizer.startMoving
VRML
И только сегодня догадался, экспериментально, открыть wrl-файл архиватором! :)
Есть ли пример, на подобии заставки Виндовс "Летающие предметы" с кубом морфирующим в атом? и т.д.
Вот мой труд, на который ушло уймо времени из-за скудного количества информации в сети. Везде попадаются справочники от 40 до 400кб!!! В конце-концов наскрёб и получил результат!
Код:
Спасибо за внимание!