Commit graph

8383 commits

Author SHA1 Message Date
Bill Currie
e41da2f579 Store the start fraction and position in the right stack slot.
Oops. Yay, valgrind.
2011-11-28 20:54:35 +09:00
Bill Currie
d61cb25a44 Add code to rebuild the bsp brushes.
Names and locations of declarations are still up in the air, but things
seem to be working assuming my test code is correct.
2011-11-28 20:54:35 +09:00
Bill Currie
853bf13d9e Move the winding code into libQFmodels. 2011-11-28 20:54:35 +09:00
Bill Currie
91e65b6c80 Rename mplane_t to plane_t and clean up the mess.
I got rather tired of there being multiple definitions of mostly compatible
plane types (and I need a common type anyway). dplane_t still exists for
now because I want to be careful when messing with the actual bsp format.
2011-11-28 20:54:34 +09:00
Bill Currie
2f23cfa4d0 Add a new (failing) test case.
This one demonstrates the need for more information in the bsp tree
(surface polygons). When the box collides with a corner where one side is
flat and the other angled, but there's a partition plane cutting the two,
the box can instead collide with the angled side before it hits the corner.
2011-11-28 20:54:34 +09:00
Bill Currie
7a1faee460 Bail out when the trace advances past the nearest collision. 2011-11-28 20:54:34 +09:00
Bill Currie
a943cdf2c4 Handle dual collisions.
When the trace collides with something on both sides of a plane, the nearer
collision is required. The code now correctly checks both sides and keeps
the nearer collision.
2011-11-28 20:54:34 +09:00
Bill Currie
0cf5dec5bb Fix the covered step tests.
However,  there is still a problem with moves where the box is always cut
by the plane: both sides need to be tested (done), but when the first side
checked allows longer motion than the second, but still collides, only the
first side is checked. The shorter motion is required.
2011-11-28 20:54:34 +09:00
Bill Currie
8cc320b7ef Move the start point to the near side of the crossed plane.
I'm not sure the end point needs to be moved at all, but I'll leave it
alone for now. I have a couple of failing test cases that seem to be caused
by not handling moves where the box is always cut by the plane.
2011-11-28 20:54:34 +09:00
Bill Currie
fa6390a46a Correct the sign for the shift in frac.
However, this is not entirely correct as the new start point when testing
the other side of the plane also needs to be calculated.
2011-11-28 20:54:34 +09:00
Bill Currie
b82d9f5894 Another test, another bug.
Fix an incorrect test using offset (forgot to negate).
2011-11-28 20:54:34 +09:00
Bill Currie
9984a2e87a Fix some missing usages of offset.
This fixes my one failing box clip test. Now I need to find more broken
cases. At least now, they should be real tests.
2011-11-28 20:54:33 +09:00
Bill Currie
9d63298032 Tweak a fixme comment.
The code is potentially slow, especially on big maps, but I haven't noticed
any issues yet.
2011-11-28 20:54:33 +09:00
Bill Currie
03abb3b27d Add support for ellipsoids.
Not that boxes work yet, but the fix is the same.
2011-11-28 20:54:33 +09:00
Bill Currie
b4da9241f6 Make a fresh start on box clipping.
I even have a failing test to fix :)
2011-11-28 20:54:33 +09:00
Bill Currie
268e732b90 Add a Quat_t union.
It isn't used yet, but it might make messing with quaternions a little
easier.
2011-11-28 09:36:09 +09:00
Bill Currie
7f551026f5 Merge remote-tracking branch 'kurogane/master' 2011-11-15 18:06:44 +09:00
Bill Currie
ea02f3cd44 Fix a missed byteswap when loading qfo files. 2011-11-15 17:36:55 +09:00
Bill Currie
6d2b92125a Make nva a little more memory efficient. 2011-11-15 13:47:05 +09:00
Bill Currie
2457837b37 Make some improvements to the winding docs. 2011-11-12 12:17:45 +09:00
Bill Currie
6b62b850a7 Add an option to omit the mipmap from extracted textures.
This is at the request of Spirit (quaddicted). Great idea.
2011-10-05 20:43:40 +09:00
Bill Currie
940476dce1 Do some renaming to make things a little clearer. 2011-10-02 15:07:36 +09:00
Bill Currie
3b8ab404a0 Add the ability to save the extra model parameters.
The params are eye position, flags and synctype. Provision is made for
reading them from a text block on export, but nothing is done other than
retrieving the text block.
2011-09-28 07:41:20 +09:00
Bill Currie
a356ce6572 Assume the trace will be allsolid.
Rather than setting allsolid when the trace fails to leave solid space,
clear it when the trace enters non-solid space. This is necessary because
the trace might visit only one node and thus the failure to leave solid
space will not be detected. This fixes the problem with hipnotic's bobbing
water.
2011-09-27 17:14:42 +09:00
Bill Currie
9c6693d567 Correct hull3 and its tests.
I'd gotten the solid/empty parts backwards.
2011-09-27 17:11:57 +09:00
Bill Currie
3e74aa5303 Add trace-qf-bad.c to Makefile.am and testclip.c. 2011-09-27 17:09:04 +09:00
Bill Currie
e23ee07b6f Ensure id's trace is properly initialized. 2011-09-27 15:38:28 +09:00
Bill Currie
32ff639bf3 Add an old qf version of trace.c
This version is broken (it's the one "fixed" by commit 981622f9), but it
does behave correctly for hipnotic's bobbing water. The question is, why?
2011-09-27 13:00:19 +09:00
Bill Currie
9daa0b7bde Rename the empty and solid flags, and use them correctly.
seen_empty and seen_solid much better reflect their meanings, and also use
them correctly (eg, visiting an empty node does not clear seen_solid).
Hipnotic's bobbing water is still broken, though.
2011-09-27 12:33:50 +09:00
Bill Currie
a7482570b6 Document the geometry in the tests. 2011-09-27 12:30:21 +09:00
Bill Currie
aa6b7ef7e8 Add some water based tests.
Unfortunatly, they haven't uncovered the bug.
2011-09-26 21:02:54 +09:00
Bill Currie
800e8cb3da Make the id trace code more readily usable in the engine. 2011-09-26 19:56:00 +09:00
Bill Currie
ae0dc6f06b Disable the "shouldn't happen" code.
It causes the tests to fail, and doesn't affect the problem I'm currently
facing.
2011-09-26 19:56:00 +09:00
Bill Currie
baf9b7c181 Make the test nodes a little easier to read. 2011-09-26 19:56:00 +09:00
Bill Currie
683adf1850 Print the name and texture number for model skins.
Use SYS_GLT (1024) for gl texture debugging.
2011-09-26 13:03:53 +09:00
Bill Currie
521f482806 Fix an off-by-one error that caused uvs to wrap. 2011-09-25 20:52:28 +09:00
Bill Currie
1277c17cd9 Give the 24-8 bit converter a massive speedup.
The biggest part of the speedup is reading from blender's image only once
(it seems that every read does so from GL rather than memory: ouch). Also,
cache the results for each color.
2011-09-25 20:50:32 +09:00
Bill Currie
2e2484250c Add some notes about modelgen's commands. 2011-09-24 21:31:02 +09:00
Bill Currie
50795b8239 Calculate the model "size".
The size is actually the average area in quake units of the mesh's
triangles. Again, my results are slightly smaller (0.025).

With this, all calculable fields are set. Only eye position, flags and
synctype remain.
2011-09-24 13:18:23 +09:00
Bill Currie
07b5db64c6 Calculate the bounding radius.
The calculated radius is a smidge (0.05) smaller than the original
(invisibl.mdl), but I think that's due to the difference in source data: id
used the original models, I'm using their output.
2011-09-24 13:03:18 +09:00
Bill Currie
3b33d8dade Make the basis shape key active on import.
Blender must have an active shape key before shape key animation will work.
This fixes the models being locked to the first frame until a shape key is
selected via the UI.
2011-09-24 11:43:06 +09:00
Bill Currie
bd840726c2 Fix the mangled faces.
I /did/ see the warning about vertex index 0 in the obj importer script,
but I didn't take it seriously enough. This fixes both the twisted texture
on a couple of faces, and the truly mangled tris when exporting (using
invisibl.mdl for testing).
2011-09-24 09:00:14 +09:00
Bill Currie
a1d9e752cd Fix the messed up UVs.
I had forgotten to invert the t axis.
2011-09-23 19:58:26 +09:00
Bill Currie
a80eef8bc4 Get the exporter mostly working.
There seems to be some problems with the UVs, only one frame is exported,
and various model params don't get set (eye position, size, bounding
radius, synctype, flags), but the size and shape look right in qf :).
2011-09-23 19:01:31 +09:00
Bill Currie
8ccb07d959 Make the MDL classes a little more usable.
This really eased the writing of the exporter :)
2011-09-23 19:00:39 +09:00
Bill Currie
8bec9cb203 Clean up export_mdl() a little. 2011-09-23 13:00:46 +09:00
Bill Currie
4a3731652e Fix the exported skin conversion.
I must remember to test language features in python 3 :P
2011-09-22 14:08:10 +09:00
Bill Currie
40f46f2ea3 Complete mdl writing.
Except for the normal index in the frame bounds (and potentially frame
names with junk after the terminating nul), the output is identical to the
input for:
	mdl=MDL().read("invisibl.mdl")
	mdl.write("test.mdl")
2011-09-22 11:44:08 +09:00
Bill Currie
e35dd29a2d Don't use Vector in mdl.py
This will make testing of the MDL class a little easier (independent of
Blender).
2011-09-22 11:43:57 +09:00
Bill Currie
a58f9582b0 Try to write out the skin.
Something's not working as all I get is a black texture, but the basics
(MDL writing) seem to be ok.
2011-09-22 00:58:57 +09:00