1 registered members (degenerate_762),
1,128
guests, and 7
spiders. |
Key:
Admin,
Global Mod,
Mod
|
|
|
Re: vec_for_vertex gap issue
[Re: Dooley]
#472292
04/18/18 19:54
04/18/18 19:54
|
Joined: May 2005
Posts: 868 Chicago, IL
Dooley
OP
User
|
OP
User
Joined: May 2005
Posts: 868
Chicago, IL
|
@Superku Thank you! Controlling all the segments from one loop did the trick! It's a little less versatile now, since I have to have a fixed number of segments per arm, but they all keep together really nicely. Here's the code I used, in case anyone else wants to use some tentacles... /////////////////////////////// #include <acknex.h> #include <default.c> #include <mtlFX.c> ///////////////////////////////
//Tentacle Test var segments = .01; var roots = 50; var speed = 10; var taper = .85; var bend = 10;
action segment() { set(my,PASSABLE); my.material = mtl_specBump; wait(1); while(my.skill1 > 0) { my.scale_x = my.scale_x * taper; my.skill1 -= 1; } my.scale_y = my.scale_x; my.scale_z = my.scale_x; }
var pan_mod = 0; var tilt_mod = 0; var roll_mod = 0;
action root() { ENTITY* ent_seg01; ENTITY* ent_seg02; ENTITY* ent_seg03; ENTITY* ent_seg04; ENTITY* ent_seg05; ENTITY* ent_seg06; ENTITY* ent_seg07; ENTITY* ent_seg08; ENTITY* ent_seg09; ENTITY* ent_seg10; random_seed(0); my.pan = random(360) + pan_mod; random_seed(0); my.tilt = random(90) + tilt_mod; random_seed(0); my.roll = random(360) + roll_mod; random_seed(0); pan_mod += random(45) + 45; random_seed(0); tilt_mod += random(45) + 90; random_seed(0); roll_mod += random(45) + 180; set(my,PASSABLE); my.material = mtl_specBump; if(roots > 0) { roots -= 1; ent_create("tentacle.mdl",my.x,root); wait(1); } ent_seg01 = ent_create("tentacle.mdl",my.x,segment); ent_seg01.skill1 = 1; my.skill1 = handle(ent_seg01); wait(1); ent_seg02 = ent_create("tentacle.mdl",my.x,segment); ent_seg02.skill1 = 2; my.skill2 = handle(ent_seg02); wait(1); ent_seg03 = ent_create("tentacle.mdl",my.x,segment); ent_seg03.skill1 = 3; my.skill3 = handle(ent_seg03); wait(1); ent_seg04 = ent_create("tentacle.mdl",my.x,segment); ent_seg04.skill1 = 4; my.skill4 = handle(ent_seg04); wait(1); ent_seg05 = ent_create("tentacle.mdl",my.x,segment); ent_seg05.skill1 = 5; my.skill5 = handle(ent_seg05); wait(1); ent_seg06 = ent_create("tentacle.mdl",my.x,segment); ent_seg06.skill1 = 6; my.skill6 = handle(ent_seg06); wait(1); ent_seg07 = ent_create("tentacle.mdl",my.x,segment); ent_seg07.skill1 = 7; my.skill7 = handle(ent_seg07); wait(1); ent_seg08 = ent_create("tentacle.mdl",my.x,segment); ent_seg08.skill1 = 8; my.skill8 = handle(ent_seg08); wait(1); ent_seg09 = ent_create("tentacle.mdl",my.x,segment); ent_seg09.skill1 = 9; my.skill9 = handle(ent_seg09); wait(1); ent_seg10 = ent_create("tentacle.mdl",my.x,segment); ent_seg10.skill1 = 10; my.skill10 = handle(ent_seg10); wait(1); //initialize movement variables var my_angles; var my_speed = speed; random_seed(0); segments += random(.2) + .01; wait(-1 * segments); //begin waving sequence while(1) { //Move Segment 1 //ent_seg01 = ptr_for_handle(my.skill1); //make rotation changes my_angles += my_speed * time_step; ent_seg01.pan = my.pan + bend * sin(my_angles); ent_seg01.tilt = my.tilt + bend * sin(my_angles); ent_seg01.roll = my.roll + bend * sin(my_angles); vec_for_vertex(ent_seg01.x,my,15); ent_seg02.pan = ent_seg01.pan + bend * sin(my_angles); ent_seg02.tilt = ent_seg01.tilt + bend * sin(my_angles); ent_seg02.roll = ent_seg01.roll + bend * sin(my_angles); vec_for_vertex(ent_seg02.x,ent_seg01,15); ent_seg03.pan = ent_seg02.pan + bend * sin(my_angles); ent_seg03.tilt = ent_seg02.tilt + bend * sin(my_angles); ent_seg03.roll = ent_seg02.roll + bend * sin(my_angles); vec_for_vertex(ent_seg03.x,ent_seg02,15); ent_seg04.pan = ent_seg03.pan + bend * sin(my_angles); ent_seg04.tilt = ent_seg03.tilt + bend * sin(my_angles); ent_seg04.roll = ent_seg03.roll + bend * sin(my_angles); vec_for_vertex(ent_seg04.x,ent_seg03,15); ent_seg05.pan = ent_seg04.pan + bend * sin(my_angles); ent_seg05.tilt = ent_seg04.tilt + bend * sin(my_angles); ent_seg05.roll = ent_seg04.roll + bend * sin(my_angles); vec_for_vertex(ent_seg05.x,ent_seg04,15); ent_seg06.pan = ent_seg05.pan + bend * sin(my_angles); ent_seg06.tilt = ent_seg05.tilt + bend * sin(my_angles); ent_seg06.roll = ent_seg05.roll + bend * sin(my_angles); vec_for_vertex(ent_seg06.x,ent_seg05,15); ent_seg07.pan = ent_seg06.pan + bend * sin(my_angles); ent_seg07.tilt = ent_seg06.tilt + bend * sin(my_angles); ent_seg07.roll = ent_seg06.roll + bend * sin(my_angles); vec_for_vertex(ent_seg07.x,ent_seg06,15); ent_seg08.pan = ent_seg07.pan + bend * sin(my_angles); ent_seg08.tilt = ent_seg07.tilt + bend * sin(my_angles); ent_seg08.roll = ent_seg07.roll + bend * sin(my_angles); vec_for_vertex(ent_seg08.x,ent_seg07,15); ent_seg09.pan = ent_seg08.pan + bend * sin(my_angles); ent_seg09.tilt = ent_seg08.tilt + bend * sin(my_angles); ent_seg09.roll = ent_seg08.roll + bend * sin(my_angles); vec_for_vertex(ent_seg09.x,ent_seg08,15); ent_seg10.pan = ent_seg09.pan + bend * sin(my_angles); ent_seg10.tilt = ent_seg09.tilt + bend * sin(my_angles); ent_seg10.roll = ent_seg09.roll + bend * sin(my_angles); vec_for_vertex(ent_seg10.x,ent_seg09,15); wait(1); } }
function main() { sky_color.red = 0; sky_color.green = 57; sky_color.blue = 77; // bright blue sky
d3d_antialias = 9;
level_load("Tentacles.WMB"); wait(2); }
|
|
|
|