Copycat
#38 posted by Preach on 2008/09/29 00:33:20
Yeah, but that copy wouldn't count towards the limit of 1024, only the ones that are loaded from the mdl structure count for that.
Slide
#39 posted by bal on 2008/09/29 00:51:05
Was just browsing Polycount and someone made a script like the one necros posted for Maya:
http://boards.polycount.net/showthread.php?t=55987
Thought it might interest someone maybe.
How
#40 posted by madfox on 2008/09/29 21:23:35
do I create the last death frame of a monster,
so its death scene leaves in another skin index?
#41 posted by necros on 2008/09/29 21:38:38
just add self.skin = # in the last frame function.
but seriously, madfox. post this stuff in the programming thread. :\
Good
#42 posted by madfox on 2008/09/30 01:20:44
thanks for advice.
nice thread.
Milkshape
#43 posted by Killa on 2008/10/15 09:18:15
if anyone's interested in modeling and uses milkshape i have a tutorial i wrote that might help you out.
it's here: http://z10.invisionfree.com/Quaked/index.php?showtopic=4
Interpolated Vertex Animation And Mesh Volume
#44 posted by killpixel on 2018/01/04 20:39:26
model & animation: A rotating disc (like a gear, for example) comprised of 20 frames for 1 full rotation (frame 1 being 0 degrees, frame 10 being 180 degrees, etc). When the animation loop is interrupted, the gear will idle at frame 1.
scenario: the animation loop is interrupted at say, frame 12.
problem: the engine's interpolation adds frames in a straight line between each of the vert's positions, causing the disc to collapse briefly as it transitions from frame 12 to frame 1.
I need some way to constrain the mesh volume so it will appear to rotate naturally between frames. Is this possible with a skeletal format such as IQM?
#45 posted by Kinn on 2018/01/04 21:32:58
Is there a QC command (in supported engines) to suppress interpolation for one frame, or am I imagining it?
Nolerp Per Frame
#46 posted by killpixel on 2018/01/04 22:02:55
there's this:
//DP_EF_TELEPORT_BIT
//idea: id software
//darkplaces implementation: divVerent
//effects bit:
float EF_TELEPORT_BIT = 2097152;
//description:
//when toggled, interpolation of the entity is skipped for one frame. Useful for teleporting.
//to toggle this bit in QC, you can do:
// self.effects += (EF_TELEPORT_BIT - 2 * (self.effects & EF_TELEPORT_BIT));
Which I haven't tried yet because because the disc in question is just a small part of a larger mesh and I don't want to nolerp the entire entity.
I could split the disc off as a separate entity but that's something I'm trying to avoid...
QC Manged Looping
#47 posted by Qmaster on 2018/01/04 22:28:27
You might need to animate it yourself using qc (like for enemies) to let you stop at any frame?
It Is Animated That Way
#48 posted by killpixel on 2018/01/04 23:26:02
the loop is dependent on player input which can change at any time. Unfortunately forcing a full loop before stopping the animation isn't possible here.
Loops Versus Interpolation
#49 posted by madfox on 2018/01/05 00:16:05
Maybe not the same, but an answer to my experience in making a convoybelt. The intention was to create a production line with an energy cell with twenty frames. I have noticed that the method that uses darkplaces is different from fitzquake.
I animated one cell/1frame, going to the half part, then hide the cell under the convoybelt, and then sweeping it up after the other half part was gone.
The convoybelt went easy, as it is a straight line.
The claw made an angle , so I had to hide it in three frames before the next row.
When I finally got the animation right, the interpolation was discussed.
After a lot of sliding and fitting I finally got the series running, but then I realized that each engine applies its own way of "turning".
here are the model versions I used.
What Do You Mean Loops?
#50 posted by Qmaster on 2018/01/05 00:24:32
I'm not understanding what you are doing.
Loop = Frame Sequence
#51 posted by killpixel on 2018/01/05 00:37:52
what I'm doing:
if player is pressing 'x' play frame sequence indefinitely; if player isn't pressing 'x' go to frame 1.
Interpolating any frame other than 20, 19, 18 and 17 to frame 1 results in poop because of the reason stated in post #44.
#52 posted by Kinn on 2018/01/05 00:53:48
Which I haven't tried yet because because the disc in question is just a small part of a larger mesh and I don't want to nolerp the entire entity.
What else in the mesh is moving apart from the disc? I'm trying to visualise how the nolerp for a frame option would look bad...
It's A Viewmodel
#53 posted by killpixel on 2018/01/05 01:01:39
the mesh is in a very different position during that particular sequence than it is in any other, so that lerp is critical for a smooth transition (especially since it's right in your face).
#54 posted by Kinn on 2018/01/05 01:11:18
So I assume adding a transition animation where the weapon spins down to a rest state when player releases the button is out of the question?
The Transition From Fire To Spindown
#55 posted by killpixel on 2018/01/05 01:26:37
is where the problem is occurring. to adjust the mesh position of the first few frames of the spin down anim to smooth the transition between the two looks terrible (artistically, needs that sudden jolt), worse than the gear issue itself.
looks like my options are 1) learn/setup/test yet another model format just to figure out how it works and see if it will solve the issue and lose valuable time while doing so, 2) remove the gear (rather not), 3) remove time slowing down (possible, but rather not) 4) make the gear a separate entity and achieve rotation via qc rather than vertex animation (this sounds like another giant can of worms and I think it will look jittery), 5) do something else with my life.
Qmaster
#56 posted by madfox on 2018/01/05 01:33:04
In qmle is an option for frames setting to interpolation.
Not sure if it has anything to do with qc, but when using a model it sometimes angles back to the start frame, in stead of rolling on. Creating a strange turn of the animation.
I just call it a criple loop, may sound strange.
Frame Seqwhatnow?
#57 posted by Qmaster on 2018/01/05 18:38:44
Are you using framegroups or are you stepping it through frame by frame like on monsters
E.g.:
playergearwep1 [0, playergearwep2] () { self.weaponframe = 0;};
playergearwep2 [1, playergearwep3] () { self.weaponframe = 1;};
etc.
Viewmodels are a whole different ball game. Not sure if most engines even support framegroups on viewmodels (FTE does).
#58 posted by Spike on 2018/01/05 21:57:24
if you want to get fancy, csqc is the way to go.
combine with modelevents too or something, and you can have particle effects etc handled in a generic way.
but yeah, if you want something to spin, do it in csqc. a little spinup+spindown makes it feel more real, and definitely smoother.
skeletal models potentially allow you to control each part of a model independently.
The Hack Way
#59 posted by Preach on 2018/01/05 22:53:46
If you want to do something that's supported in all engines, here's a hack to skip the interpolation:
Have two separate model files for your weapon, v_spinning.mdl and v_standing.mdl. Change the weapon model when you want to switch between two poses without interpolating them, just change the frame when you want to have interpolation.
It's not a pretty solution, but it works!
Thanks For The Ideas
#60 posted by killpixel on 2018/01/06 00:10:47
@qmaster - we use both framegroups and hardcoded frames depending on the situation. The anims in question are using framegroups, I believe.
@spike - I'm leaning toward making the gear a separate entity but won't even have to do that if IQM would allow me to control a particular bone and nolerp that one bone for one frame.
@preach - that's an interesting hack :D
#61 posted by metlslime on 2018/01/06 00:42:29
In Fitzquake-derived engines, EF_MUZZLEFLASH will disable lerping for one frame.
But I think Preach's answer is the best.
#62 posted by killpixel on 2018/01/06 00:58:49
The issue with EF_MUZZLEFLASH, DP_EF_TELEPORT_BIT and Preach's solution (unless I'm missing something) is that I don't want to nolerp the entire model, just a part of it.
Looks like splitting it off into another entity is that way to go about it (lame!)
|