View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0005576 | DarkRadiant | Models | public | 03.04.2021 15:36 | 27.11.2021 09:20 |
Reporter | greebo | Assigned To | greebo | ||
Priority | normal | Severity | normal | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Product Version | 2.11.0 | ||||
Target Version | 2.12.0 | Fixed in Version | 2.12.0 | ||
Summary | 0005576: ASE importer needs to handle shared vertices with different normals | ||||
Description | The ASE loader in DarkRadiant's picomodel library is not dealing with more than one vertex normal information for vertices that are shared across triangles. The TDM engine's ASE loader will store any vertex separately if they are differing in any of the XYZ, UV, vertexColour or vertexNormal attributes. On the other hand, vertices with a matching set of these attributes are treated as the same vertex even if they appear separated in the ASE file. Consider a cube which consists of 8 vertices. The ASE file will list these 8 vertices in the *MESH_VERTEX_LIST section. The *MESH_FACE_LIST section will connect these vertices to triangles, referencing the vertices by index. The *MESH_NORMALS section will list a normal vector for each face AND a separate normal vector for each of its vertices (*MESH_VERTEXNORMAL), again referencing the vertex by its index. If a vertex is shared across triangles (like in the cube scenario), the *MESH_VERTEXNORMAL will likely differ for each triangle it's in, so e.g. vertex with index 6 will have the normal (0,0,1) in face 0, but the same vertex 6 can have the normal (0,-1,0) in a different triangle on another side of the cube. The engine will store a different copy of vertex 6 for each (xyz,uv,c,normal) combination it is used in. DarkRadiant's ASE loader on the other hand, will just overwrite the vertexNormal of the indexed vertex with whatever value it encounters next - in the above example the last normal for vertex 6 in the ASE file will be stored and used. The goal of this issue should be to generate the ASE surfaces in the same way as the engine code. | ||||
Additional Information | See attached cube, which when placed in a test map will have proper lighting in the game (no smoothing around the cube's edges), whereas specular lighting is pretty much non-existent in DR due to the weird normals and broken tangents. | ||||
Tags | No tags attached. | ||||
Attached Files | testcube.ase (6,511 bytes)
*3DSMAX_ASCIIEXPORT 200 *COMMENT "Ascii Scene Exporter v2.52" *SCENE { *SCENE_FILENAME "cube.blend" *SCENE_FIRSTFRAME 0 *SCENE_LASTFRAME 100 *SCENE_FRAMESPEED 30 *SCENE_TICKSPERFRAME 160 *SCENE_BACKGROUND_STATIC 0.0000 0.0000 0.0000 *SCENE_AMBIENT_STATIC 0.0000 0.0000 0.0000 } *MATERIAL_LIST { *MATERIAL_COUNT 1 *MATERIAL 0 { *MATERIAL_NAME "material" *MATERIAL_CLASS "Standard" *MATERIAL_AMBIENT 0.0000 0.0000 0.0000 *MATERIAL_DIFFUSE 0.9071 0.9071 0.9071 1.0000 *MATERIAL_SPECULAR 1.0000 1.0000 1.0000 *MATERIAL_SHINE 2.5000 *MATERIAL_SHINESTRENGTH 0.5000 *MATERIAL_TRANSPARENCY 0.0000 *MATERIAL_WIRESIZE 1.0000 *MATERIAL_SHADING Blinn *MATERIAL_XP_FALLOFF 0.0000 *MATERIAL_SELFILLUM 0.0000 *MATERIAL_FALLOFF In *MATERIAL_XP_TYPE Filter *MAP_DIFFUSE { *MAP_NAME "material" *MAP_CLASS "Bitmap" *MAP_SUBNO 1 *MAP_AMOUNT 1.0000 *BITMAP "//base/textures/darkmod/stone/flat/tiles_rough_grey" *MAP_TYPE Screen *UVW_U_OFFSET 0.0000 *UVW_V_OFFSET 0.0000 *UVW_U_TILING 1.0000 *UVW_V_TILING 1.0000 *UVW_ANGLE 0.0000 *UVW_BLUR 1.0000 *UVW_BLUR_OFFSET 0.0000 *UVW_NOISE_AMT 1.0000 *UVW_NOISE_SIZE 1.0000 *UVW_NOISE_LEVEL 1 *UVW_NOISE_PHASE 0.0000 *BITMAP_FILTER Pyramidal } } } *GEOMOBJECT { *NODE_NAME "Cube" *NODE_TM { *NODE_NAME "Cube" *INHERIT_POS 0 0 0 *INHERIT_ROT 0 0 0 *INHERIT_SCL 0 0 0 *TM_ROW0 1.0000 0.0000 0.0000 *TM_ROW1 0.0000 1.0000 0.0000 *TM_ROW2 0.0000 0.0000 1.0000 *TM_ROW3 0.0000 0.0000 0.0000 *TM_POS 0.0000 0.0000 0.0000 *TM_ROTAXIS 0.0000 0.0000 0.0000 *TM_ROTANGLE 0.0000 *TM_SCALE 1.0000 1.0000 1.0000 *TM_SCALEAXIS 0.0000 0.0000 0.0000 *TM_SCALEAXISANG 0.0000 } *MESH { *TIMEVALUE 0 *MESH_NUMVERTEX 8 *MESH_NUMFACES 12 *MESH_VERTEX_LIST { *MESH_VERTEX 0 -16.0000 -16.0000 -16.0000 *MESH_VERTEX 1 -16.0000 -16.0000 16.0000 *MESH_VERTEX 2 -16.0000 16.0000 -16.0000 *MESH_VERTEX 3 -16.0000 16.0000 16.0000 *MESH_VERTEX 4 16.0000 -16.0000 -16.0000 *MESH_VERTEX 5 16.0000 -16.0000 16.0000 *MESH_VERTEX 6 16.0000 16.0000 -16.0000 *MESH_VERTEX 7 16.0000 16.0000 16.0000 } *MESH_FACE_LIST { *MESH_FACE 0: A: 1 B: 2 C: 0 AB: 0 BC: 0 CA: 0 *MESH_SMOOTHING 0 *MESH_MTLID 0 *MESH_FACE 1: A: 3 B: 6 C: 2 AB: 0 BC: 0 CA: 0 *MESH_SMOOTHING 0 *MESH_MTLID 0 *MESH_FACE 2: A: 7 B: 4 C: 6 AB: 0 BC: 0 CA: 0 *MESH_SMOOTHING 0 *MESH_MTLID 0 *MESH_FACE 3: A: 5 B: 0 C: 4 AB: 0 BC: 0 CA: 0 *MESH_SMOOTHING 0 *MESH_MTLID 0 *MESH_FACE 4: A: 6 B: 0 C: 2 AB: 0 BC: 0 CA: 0 *MESH_SMOOTHING 0 *MESH_MTLID 0 *MESH_FACE 5: A: 3 B: 5 C: 7 AB: 0 BC: 0 CA: 0 *MESH_SMOOTHING 0 *MESH_MTLID 0 *MESH_FACE 6: A: 1 B: 3 C: 2 AB: 0 BC: 0 CA: 0 *MESH_SMOOTHING 0 *MESH_MTLID 0 *MESH_FACE 7: A: 3 B: 7 C: 6 AB: 0 BC: 0 CA: 0 *MESH_SMOOTHING 0 *MESH_MTLID 0 *MESH_FACE 8: A: 7 B: 5 C: 4 AB: 0 BC: 0 CA: 0 *MESH_SMOOTHING 0 *MESH_MTLID 0 *MESH_FACE 9: A: 5 B: 1 C: 0 AB: 0 BC: 0 CA: 0 *MESH_SMOOTHING 0 *MESH_MTLID 0 *MESH_FACE 10: A: 6 B: 4 C: 0 AB: 0 BC: 0 CA: 0 *MESH_SMOOTHING 0 *MESH_MTLID 0 *MESH_FACE 11: A: 3 B: 1 C: 5 AB: 0 BC: 0 CA: 0 *MESH_SMOOTHING 0 *MESH_MTLID 0 } *MESH_NUMTVERTEX 4 *MESH_TVERTLIST { *MESH_TVERT 0 1.0000 0.0000 0.0000 *MESH_TVERT 1 0.0000 1.0000 0.0000 *MESH_TVERT 2 0.0000 0.0000 0.0000 *MESH_TVERT 3 1.0000 1.0000 0.0000 } *MESH_NUMTVFACES 12 *MESH_TFACELIST { *MESH_TFACE 0 0 1 2 *MESH_TFACE 1 0 1 2 *MESH_TFACE 2 0 1 2 *MESH_TFACE 3 0 1 2 *MESH_TFACE 4 0 1 2 *MESH_TFACE 5 0 1 2 *MESH_TFACE 6 0 3 1 *MESH_TFACE 7 0 3 1 *MESH_TFACE 8 0 3 1 *MESH_TFACE 9 0 3 1 *MESH_TFACE 10 0 3 1 *MESH_TFACE 11 0 3 1 } *MESH_NUMCVERTEX 0 *MESH_NORMALS { *MESH_FACENORMAL 0 -1.0000 0.0000 0.0000 *MESH_VERTEXNORMAL 1 -1.0000 0.0000 0.0000 *MESH_VERTEXNORMAL 2 -1.0000 0.0000 0.0000 *MESH_VERTEXNORMAL 0 -1.0000 0.0000 0.0000 *MESH_FACENORMAL 1 0.0000 1.0000 -0.0000 *MESH_VERTEXNORMAL 3 0.0000 1.0000 0.0000 *MESH_VERTEXNORMAL 6 0.0000 1.0000 0.0000 *MESH_VERTEXNORMAL 2 0.0000 1.0000 0.0000 *MESH_FACENORMAL 2 1.0000 0.0000 -0.0000 *MESH_VERTEXNORMAL 7 1.0000 0.0000 0.0000 *MESH_VERTEXNORMAL 4 1.0000 0.0000 0.0000 *MESH_VERTEXNORMAL 6 1.0000 0.0000 0.0000 *MESH_FACENORMAL 3 0.0000 -1.0000 0.0000 *MESH_VERTEXNORMAL 5 0.0000 -1.0000 0.0000 *MESH_VERTEXNORMAL 0 0.0000 -1.0000 0.0000 *MESH_VERTEXNORMAL 4 0.0000 -1.0000 0.0000 *MESH_FACENORMAL 4 0.0000 0.0000 -1.0000 *MESH_VERTEXNORMAL 6 0.0000 0.0000 -1.0000 *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 *MESH_VERTEXNORMAL 2 0.0000 0.0000 -1.0000 *MESH_FACENORMAL 5 0.0000 0.0000 1.0000 *MESH_VERTEXNORMAL 3 0.0000 0.0000 1.0000 *MESH_VERTEXNORMAL 5 0.0000 0.0000 1.0000 *MESH_VERTEXNORMAL 7 0.0000 0.0000 1.0000 *MESH_FACENORMAL 6 -1.0000 0.0000 0.0000 *MESH_VERTEXNORMAL 1 -1.0000 0.0000 0.0000 *MESH_VERTEXNORMAL 3 -1.0000 0.0000 0.0000 *MESH_VERTEXNORMAL 2 -1.0000 0.0000 0.0000 *MESH_FACENORMAL 7 0.0000 1.0000 -0.0000 *MESH_VERTEXNORMAL 3 0.0000 1.0000 0.0000 *MESH_VERTEXNORMAL 7 0.0000 1.0000 0.0000 *MESH_VERTEXNORMAL 6 0.0000 1.0000 0.0000 *MESH_FACENORMAL 8 1.0000 0.0000 0.0000 *MESH_VERTEXNORMAL 7 1.0000 0.0000 0.0000 *MESH_VERTEXNORMAL 5 1.0000 0.0000 0.0000 *MESH_VERTEXNORMAL 4 1.0000 0.0000 0.0000 *MESH_FACENORMAL 9 0.0000 -1.0000 0.0000 *MESH_VERTEXNORMAL 5 0.0000 -1.0000 0.0000 *MESH_VERTEXNORMAL 1 0.0000 -1.0000 0.0000 *MESH_VERTEXNORMAL 0 0.0000 -1.0000 0.0000 *MESH_FACENORMAL 10 0.0000 0.0000 -1.0000 *MESH_VERTEXNORMAL 6 0.0000 0.0000 -1.0000 *MESH_VERTEXNORMAL 4 0.0000 0.0000 -1.0000 *MESH_VERTEXNORMAL 0 0.0000 0.0000 -1.0000 *MESH_FACENORMAL 11 0.0000 -0.0000 1.0000 *MESH_VERTEXNORMAL 3 0.0000 0.0000 1.0000 *MESH_VERTEXNORMAL 1 0.0000 0.0000 1.0000 *MESH_VERTEXNORMAL 5 0.0000 0.0000 1.0000 } } *PROP_MOTIONBLUR 0 *PROP_CASTSHADOW 1 *PROP_RECVSHADOW 1 *MATERIAL_REF 0 } | ||||
DarkRadiant: ase_importer 543bf75f 04.04.2021 03:37 Details Diff |
0005576: Start adding test models and unit tests covering the ASE importer |
Affected Issues 0005576 |
|
mod - test/Models.cpp | Diff File | ||
add - test/resources/tdm/models/ase/exploded_cube.ase | Diff File | ||
add - test/resources/tdm/models/ase/merged_cube.ase | Diff File | ||
add - test/resources/tdm/models/ase/separated_tiles.ase | Diff File | ||
add - test/resources/tdm/models/ase/single_triangle.ase | Diff File | ||
add - test/resources/tdm/models/ase/testcube.ase | Diff File | ||
add - test/resources/tdm/models/ase/testsphere.ase | Diff File | ||
add - test/resources/tdm/models/ase/tiles.ase | Diff File | ||
add - test/resources/tdm/models/ase/tiles_two_materials.ase | Diff File | ||
add - test/resources/tdm/models/ase/tiles_with_shared_vertex.ase | Diff File | ||
add - test/resources/tdm/models/ase/tiles_with_shared_vertex_and_colour.ase | Diff File | ||
DarkRadiant: ase_importer 19a58a7d 04.04.2021 04:01 Details Diff |
0005576: More tests checking the UVW texture keywords in ASE files |
Affected Issues 0005576 |
|
mod - test/Models.cpp | Diff File | ||
add - test/resources/tdm/models/ase/testcube_uv_angle.ase | Diff File | ||
add - test/resources/tdm/models/ase/testcube_uv_offset.ase | Diff File | ||
add - test/resources/tdm/models/ase/testcube_uv_tiling.ase | Diff File | ||
DarkRadiant: ase_importer 6a39c539 04.04.2021 04:31 Details Diff |
0005576: Add vertex normal parsing test (failing) |
Affected Issues 0005576 |
|
mod - test/Models.cpp | Diff File | ||
DarkRadiant: ase_importer f2996fce 04.04.2021 04:58 Details Diff |
0005576: Unit test case for vertex colour parsing |
Affected Issues 0005576 |
|
mod - test/Models.cpp | Diff File | ||
mod - test/resources/tdm/models/ase/tiles_with_shared_vertex_and_colour.ase | Diff File | ||
DarkRadiant: ase_importer 8b669ca0 04.04.2021 06:23 Details Diff |
0005576: Create a separate AseModelLoader to be able to refactor the ASE importer code. |
Affected Issues 0005576 |
|
add - radiantcore/model/picomodel/AseModelLoader.cpp | Diff File | ||
add - radiantcore/model/picomodel/AseModelLoader.h | Diff File | ||
add - radiantcore/model/picomodel/ModelImporterBase.cpp | Diff File | ||
add - radiantcore/model/picomodel/ModelImporterBase.h | Diff File | ||
mod - radiantcore/model/picomodel/PicoModelLoader.cpp | Diff File | ||
mod - radiantcore/model/picomodel/PicoModelLoader.h | Diff File | ||
mod - radiantcore/model/picomodel/PicoModelModule.h | Diff File | ||
mod - radiantcore/model/picomodel/lib/picomodules.c | Diff File | ||
mod - tools/msvc/DarkRadiantCore.vcxproj | Diff File | ||
mod - tools/msvc/DarkRadiantCore.vcxproj.filters | Diff File | ||
DarkRadiant: ase_importer bb5e34da 04.04.2021 06:57 Details Diff |
0005576: Add new overload to construct a StaticModel from a list of pre-constructed StaticModelSurfaces |
Affected Issues 0005576 |
|
mod - radiantcore/CMakeLists.txt | Diff File | ||
mod - radiantcore/model/picomodel/StaticModel.cpp | Diff File | ||
mod - radiantcore/model/picomodel/StaticModel.h | Diff File | ||
DarkRadiant: ase_importer 53f905f9 04.04.2021 07:20 Details Diff |
0005576: StaticModel no longer directly relies on picomodel_t structures |
Affected Issues 0005576 |
|
mod - radiantcore/model/picomodel/AseModelLoader.cpp | Diff File | ||
mod - radiantcore/model/picomodel/PicoModelLoader.cpp | Diff File | ||
mod - radiantcore/model/picomodel/PicoModelLoader.h | Diff File | ||
mod - radiantcore/model/picomodel/StaticModel.cpp | Diff File | ||
mod - radiantcore/model/picomodel/StaticModel.h | Diff File | ||
DarkRadiant: ase_importer 73adffef 04.04.2021 07:32 Details Diff |
0005576: Move some files from models/picomodel/ to the more generic models/import/ |
Affected Issues 0005576 |
|
mod - radiantcore/CMakeLists.txt | Diff File | ||
mod - radiantcore/model/picomodel/PicoModelLoader.h | Diff File | ||
mod - radiantcore/model/picomodel/PicoModelModule.h | Diff File | ||
mod - tools/msvc/DarkRadiantCore.vcxproj | Diff File | ||
mod - tools/msvc/DarkRadiantCore.vcxproj.filters | Diff File | ||
DarkRadiant: ase_importer 1577f7ba 04.04.2021 07:34 Details Diff |
0005576: Move StaticModel from model/picomodel/ to to its parent folder |
Affected Issues 0005576 |
|
mod - radiantcore/CMakeLists.txt | Diff File | ||
mod - radiantcore/model/import/AseModelLoader.cpp | Diff File | ||
mod - radiantcore/model/import/ModelImporterBase.cpp | Diff File | ||
mod - radiantcore/model/picomodel/PicoModelLoader.cpp | Diff File | ||
mod - radiantcore/model/picomodel/PicoModelLoader.h | Diff File | ||
mod - tools/msvc/DarkRadiantCore.vcxproj | Diff File | ||
mod - tools/msvc/DarkRadiantCore.vcxproj.filters | Diff File | ||
DarkRadiant: ase_importer 670e724b 04.04.2021 08:23 Details Diff |
0005576: Add const-ness |
Affected Issues 0005576 |
|
mod - radiantcore/model/picomodel/lib/picointernal.c | Diff File | ||
mod - radiantcore/model/picomodel/lib/picointernal.h | Diff File | ||
DarkRadiant: ase_importer daf8333d 04.04.2021 08:24 Details Diff |
0005576: Move the pm_ase.c code to a C++ source file, fix a few compilation errors. No ASE parsing possible at this point. |
Affected Issues 0005576 |
|
mod - radiantcore/CMakeLists.txt | Diff File | ||
mod - radiantcore/model/import/AseModelLoader.cpp | Diff File | ||
mod - tools/msvc/DarkRadiantCore.vcxproj | Diff File | ||
mod - tools/msvc/DarkRadiantCore.vcxproj.filters | Diff File | ||
DarkRadiant: ase_importer 4d507417 04.04.2021 10:56 Details Diff |
0005576: Moving pico-to-staticsurface conversion code to PicoModelLoader. |
Affected Issues 0005576 |
|
mod - radiantcore/model/StaticModelSurface.cpp | Diff File | ||
mod - radiantcore/model/StaticModelSurface.h | Diff File | ||
mod - radiantcore/model/import/AseModel.cpp | Diff File | ||
add - radiantcore/model/import/AseModel.h | Diff File | ||
mod - radiantcore/model/import/AseModelLoader.cpp | Diff File | ||
mod - radiantcore/model/picomodel/PicoModelLoader.cpp | Diff File | ||
mod - radiantcore/model/picomodel/PicoModelLoader.h | Diff File | ||
mod - tools/msvc/DarkRadiantCore.vcxproj | Diff File | ||
mod - tools/msvc/DarkRadiantCore.vcxproj.filters | Diff File | ||
DarkRadiant: ase_importer 9cccf6b2 04.04.2021 10:59 Details Diff |
0005576: Remove picomodel references from AseModelLoader. |
Affected Issues 0005576 |
|
mod - radiantcore/model/import/AseModelLoader.cpp | Diff File | ||
DarkRadiant: ase_importer d8845d73 04.04.2021 11:44 Details Diff |
0005576: A StaticModelSurface has to be constructed with non-empty vertex and index data. Add a new constructor accepting the rvalue-refs of the vertex and index vectors, and move the PicoModel-specific conversion code to PicoModelLoader which will create the suitable data structures before passing them to the move constructor. Prepare the AseModelLoader to use the same pattern. |
Affected Issues 0005576 |
|
mod - radiantcore/model/StaticModelSurface.cpp | Diff File | ||
mod - radiantcore/model/StaticModelSurface.h | Diff File | ||
mod - radiantcore/model/import/AseModel.cpp | Diff File | ||
mod - radiantcore/model/import/AseModel.h | Diff File | ||
mod - radiantcore/model/import/AseModelLoader.cpp | Diff File | ||
mod - radiantcore/model/picomodel/PicoModelLoader.cpp | Diff File | ||
DarkRadiant: ase_importer d5025a36 04.04.2021 13:42 Details Diff |
0005576: Place the old parser code inside AseModel::CreateFromStream() and get it to compile. Loader is not able to submit triangles yet, the adapter is missing. |
Affected Issues 0005576 |
|
mod - radiantcore/model/import/AseModel.cpp | Diff File | ||
mod - radiantcore/model/import/AseModel.h | Diff File | ||
mod - radiantcore/model/import/AseModelLoader.cpp | Diff File | ||
DarkRadiant: ase_importer fa47412c 04.04.2021 14:00 Details Diff |
0005576: Parsing ASE files using the old C code is functional now, except for the shader name. |
Affected Issues 0005576 |
|
mod - radiantcore/model/import/AseModel.cpp | Diff File | ||
mod - radiantcore/model/import/AseModel.h | Diff File | ||
DarkRadiant: ase_importer d5919511 04.04.2021 14:07 Details Diff |
0005576: Quick fix to get the materials loading again |
Affected Issues 0005576 |
|
mod - radiantcore/model/import/AseModel.cpp | Diff File | ||
mod - radiantcore/model/import/AseModelLoader.cpp | Diff File | ||
mod - radiantcore/model/picomodel/PicoModelLoader.h | Diff File | ||
DarkRadiant: ase_importer 8a0ce2bf 04.04.2021 14:31 Details Diff |
0005576: Use std::vector<ArbitraryMeshVertex> to parse the data into, as first step |
Affected Issues 0005576 |
|
mod - radiantcore/model/import/AseModel.cpp | Diff File | ||
DarkRadiant: ase_importer 028816b6 04.04.2021 17:18 Details Diff |
0005576: Migrate the ASE parser code, strip all parsing of unsupported keywords. Submission of triangles is missing right now. |
Affected Issues 0005576 |
|
mod - radiantcore/model/import/AseModel.cpp | Diff File | ||
DarkRadiant: ase_importer 46444741 04.04.2021 18:16 Details Diff |
0005576: Implement the triangle submission code and remove tons of unused code. |
Affected Issues 0005576 |
|
mod - radiantcore/model/import/AseModel.cpp | Diff File | ||
DarkRadiant: ase_importer 66a7d042 04.04.2021 18:49 Details Diff |
0005576: Fix a few bugs |
Affected Issues 0005576 |
|
mod - radiantcore/model/import/AseModel.cpp | Diff File | ||
DarkRadiant: ase_importer 057ff52a 04.04.2021 19:01 Details Diff |
0005576: Add StringTokeniser specialisation for std::istream, basically copied from the DefTokeniser template. |
Affected Issues 0005576 |
|
mod - libs/parser/Tokeniser.h | Diff File | ||
DarkRadiant: ase_importer 685b0e30 04.04.2021 19:01 Details Diff |
0005576: ASE importer is using a simpler StringTokeniser now |
Affected Issues 0005576 |
|
mod - radiantcore/model/import/AseModel.cpp | Diff File | ||
DarkRadiant: ase_importer c9ada4bd 04.04.2021 19:09 Details Diff |
0005576: Fix winding direction |
Affected Issues 0005576 |
|
mod - radiantcore/model/import/AseModel.cpp | Diff File | ||
DarkRadiant: ase_importer 63cab5bd 04.04.2021 19:19 Details Diff |
0005576: Adjust unit test assertions |
Affected Issues 0005576 |
|
mod - test/Models.cpp | Diff File | ||
DarkRadiant: ase_importer e2699e91 05.04.2021 03:39 Details Diff |
0005576: Move free functions to AseModel |
Affected Issues 0005576 |
|
mod - radiantcore/model/import/AseModel.cpp | Diff File | ||
mod - radiantcore/model/import/AseModel.h | Diff File | ||
DarkRadiant: ase_importer 448f22e2 05.04.2021 03:50 Details Diff |
0005576: Move material parsing to separate method |
Affected Issues 0005576 |
|
mod - radiantcore/model/import/AseModel.cpp | Diff File | ||
mod - radiantcore/model/import/AseModel.h | Diff File | ||
DarkRadiant: ase_importer 271f7986 05.04.2021 04:40 Details Diff |
0005576: Refactor GEOMOBJECT parsing |
Affected Issues 0005576 |
|
mod - radiantcore/model/import/AseModel.cpp | Diff File | ||
mod - radiantcore/model/import/AseModel.h | Diff File | ||
DarkRadiant: ase_importer 4ecedd14 05.04.2021 05:19 Details Diff |
0005576: Add unit test checking an ASE model with a non-identity NODE_TM matrix, which should be applied to the vertex normals of the surface. |
Affected Issues 0005576 |
|
mod - test/Models.cpp | Diff File | ||
add - test/resources/tdm/models/ase/gauge_needle.ase | Diff File | ||
DarkRadiant: ase_importer 70c4af29 05.04.2021 06:50 Details Diff |
0005576: Add NODE_TM parsing code, applying the transform to the normals like the game |
Affected Issues 0005576 |
|
mod - radiantcore/model/import/AseModel.cpp | Diff File | ||
mod - radiantcore/model/import/AseModel.h | Diff File | ||
mod - test/Models.cpp | Diff File | ||
DarkRadiant: ase_importer 2dcf027b 05.04.2021 07:21 Details Diff |
0005576: Add another ArbitraryMeshVertex constructor accepting the vertex colour |
Affected Issues 0005576 |
|
mod - libs/render/ArbitraryMeshVertex.h | Diff File | ||
mod - radiantcore/model/import/AseModel.cpp | Diff File | ||
DarkRadiant: ase_importer 65638aab 05.04.2021 08:41 Details Diff |
0005576: Implement the outer algorithm to re-use vertices if their xyz/normal/texcoord/colour combination is the same. The std::hash and std::equal_to specialisations are still empty. |
Affected Issues 0005576 |
|
mod - radiantcore/model/import/AseModel.cpp | Diff File | ||
DarkRadiant: ase_importer 1c1c692e 05.04.2021 08:54 Details Diff |
0005576: First hash and equal_to implementation |
Affected Issues 0005576 |
|
mod - radiantcore/model/import/AseModel.cpp | Diff File | ||
DarkRadiant: ase_importer 678bdd9d 05.04.2021 11:06 Details Diff |
0005576: Re-implement the vertex normal parsing code to get proper results for shared vertices |
Affected Issues 0005576 |
|
mod - libs/render/ArbitraryMeshVertex.h | Diff File | ||
mod - radiantcore/model/import/AseModel.cpp | Diff File | ||
mod - radiantcore/model/import/AseModel.h | Diff File | ||
DarkRadiant: ase_importer d175b0f7 05.04.2021 14:55 Details Diff |
0005576: Implement a similar hash bucket behaviour as used in the engine code, using the same epsilons as defined in the default values of the CVARs. |
Affected Issues 0005576 |
|
mod - libs/render/TexCoord2f.h | Diff File | ||
mod - radiantcore/model/import/AseModel.cpp | Diff File | ||
add - radiantcore/model/import/Hashing.h | Diff File | ||
mod - tools/msvc/DarkRadiantCore.vcxproj | Diff File | ||
mod - tools/msvc/DarkRadiantCore.vcxproj.filters | Diff File | ||
DarkRadiant: ase_importer 09f567e7 05.04.2021 15:01 Details Diff |
0005576: Adjust unit test to use similar epsilons as the hashing functions |
Affected Issues 0005576 |
|
mod - test/Models.cpp | Diff File | ||
DarkRadiant: ase_importer cef901e1 05.04.2021 15:06 Details Diff |
0005576: Move hashing helpers and constants to libs/render/VertexHashing.h such that they can be re-used from the unit-tests |
Affected Issues 0005576 |
|
mod - radiantcore/model/import/AseModel.cpp | Diff File | ||
mod - test/Models.cpp | Diff File | ||
mod - tools/msvc/DarkRadiantCore.vcxproj | Diff File | ||
mod - tools/msvc/DarkRadiantCore.vcxproj.filters | Diff File | ||
mod - tools/msvc/libs.vcxproj | Diff File | ||
mod - tools/msvc/libs.vcxproj.filters | Diff File | ||
DarkRadiant: ase_importer 8aada472 05.04.2021 15:15 Details Diff |
0005576: Add a few quick unit tests targeting the hash helpers |
Affected Issues 0005576 |
|
mod - test/Models.cpp | Diff File | ||
DarkRadiant: ase_importer ae69fa53 05.04.2021 18:45 Details Diff |
0005576: Linux compilation fixes |
Affected Issues 0005576 |
|
mod - radiantcore/model/import/AseModel.cpp | Diff File | ||
mod - radiantcore/model/import/AseModel.h | Diff File |
Date Modified | Username | Field | Change |
---|---|---|---|
03.04.2021 15:36 | greebo | New Issue | |
03.04.2021 15:36 | greebo | File Added: testcube.ase | |
03.04.2021 15:36 | greebo | Status | new => confirmed |
04.04.2021 19:21 | greebo | Assigned To | => greebo |
04.04.2021 19:21 | greebo | Status | confirmed => assigned |
04.04.2021 20:00 | greebo | Changeset attached | => DarkRadiant ase_importer 543bf75f |
04.04.2021 20:00 | greebo | Changeset attached | => DarkRadiant ase_importer 19a58a7d |
04.04.2021 20:00 | greebo | Changeset attached | => DarkRadiant ase_importer 6a39c539 |
04.04.2021 20:00 | greebo | Changeset attached | => DarkRadiant ase_importer f2996fce |
04.04.2021 20:00 | greebo | Changeset attached | => DarkRadiant ase_importer 8b669ca0 |
04.04.2021 20:00 | greebo | Changeset attached | => DarkRadiant ase_importer bb5e34da |
04.04.2021 20:00 | greebo | Changeset attached | => DarkRadiant ase_importer 53f905f9 |
04.04.2021 20:00 | greebo | Changeset attached | => DarkRadiant ase_importer ed51de45 |
04.04.2021 20:00 | greebo | Changeset attached | => DarkRadiant ase_importer 8d98db1a |
04.04.2021 20:00 | greebo | Changeset attached | => DarkRadiant ase_importer 87927f7f |
04.04.2021 20:00 | greebo | Changeset attached | => DarkRadiant ase_importer 3885e8bf |
04.04.2021 20:00 | greebo | Changeset attached | => DarkRadiant ase_importer 7537c3cc |
04.04.2021 20:00 | greebo | Changeset attached | => DarkRadiant ase_importer 80391e45 |
04.04.2021 20:00 | greebo | Changeset attached | => DarkRadiant ase_importer 142122d2 |
04.04.2021 20:00 | greebo | Changeset attached | => DarkRadiant ase_importer 072a7124 |
04.04.2021 20:00 | greebo | Changeset attached | => DarkRadiant ase_importer 840802c5 |
04.04.2021 20:00 | greebo | Changeset attached | => DarkRadiant ase_importer 4a082fd9 |
04.04.2021 20:00 | greebo | Changeset attached | => DarkRadiant ase_importer 7ebc22c7 |
04.04.2021 20:00 | greebo | Changeset attached | => DarkRadiant ase_importer 07e07533 |
04.04.2021 20:00 | greebo | Changeset attached | => DarkRadiant ase_importer 0598587b |
04.04.2021 20:00 | greebo | Changeset attached | => DarkRadiant ase_importer c517db91 |
04.04.2021 20:00 | greebo | Changeset attached | => DarkRadiant ase_importer 57544f48 |
04.04.2021 20:00 | greebo | Changeset attached | => DarkRadiant ase_importer 76c5c5c3 |
04.04.2021 20:00 | greebo | Changeset attached | => DarkRadiant ase_importer aa8816ea |
04.04.2021 20:00 | greebo | Changeset attached | => DarkRadiant ase_importer 5b74c07d |
05.04.2021 07:28 | greebo | Changeset removed | DarkRadiant ase_importer ed51de45 => |
05.04.2021 07:28 | greebo | Changeset removed | DarkRadiant ase_importer 8d98db1a => |
05.04.2021 07:28 | greebo | Changeset removed | DarkRadiant ase_importer 87927f7f => |
05.04.2021 07:28 | greebo | Changeset removed | DarkRadiant ase_importer 3885e8bf => |
05.04.2021 07:28 | greebo | Changeset removed | DarkRadiant ase_importer 7537c3cc => |
05.04.2021 07:28 | greebo | Changeset removed | DarkRadiant ase_importer 80391e45 => |
05.04.2021 07:28 | greebo | Changeset removed | DarkRadiant ase_importer 142122d2 => |
05.04.2021 07:28 | greebo | Changeset removed | DarkRadiant ase_importer 072a7124 => |
05.04.2021 07:28 | greebo | Changeset removed | DarkRadiant ase_importer 840802c5 => |
05.04.2021 07:28 | greebo | Changeset removed | DarkRadiant ase_importer 4a082fd9 => |
05.04.2021 07:28 | greebo | Changeset removed | DarkRadiant ase_importer 7ebc22c7 => |
05.04.2021 07:28 | greebo | Changeset removed | DarkRadiant ase_importer 07e07533 => |
05.04.2021 07:28 | greebo | Changeset removed | DarkRadiant ase_importer 0598587b => |
05.04.2021 07:28 | greebo | Changeset removed | DarkRadiant ase_importer c517db91 => |
05.04.2021 07:28 | greebo | Changeset removed | DarkRadiant ase_importer 57544f48 => |
05.04.2021 07:28 | greebo | Changeset removed | DarkRadiant ase_importer 76c5c5c3 => |
05.04.2021 07:28 | greebo | Changeset removed | DarkRadiant ase_importer aa8816ea => |
05.04.2021 07:28 | greebo | Changeset removed | DarkRadiant ase_importer 5b74c07d => |
05.04.2021 08:04 | greebo | Changeset attached | => DarkRadiant ase_importer 73adffef |
05.04.2021 08:04 | greebo | Changeset attached | => DarkRadiant ase_importer 1577f7ba |
05.04.2021 08:04 | greebo | Changeset attached | => DarkRadiant ase_importer 670e724b |
05.04.2021 08:04 | greebo | Changeset attached | => DarkRadiant ase_importer daf8333d |
05.04.2021 08:04 | greebo | Changeset attached | => DarkRadiant ase_importer 4d507417 |
05.04.2021 08:04 | greebo | Changeset attached | => DarkRadiant ase_importer 9cccf6b2 |
05.04.2021 08:04 | greebo | Changeset attached | => DarkRadiant ase_importer d8845d73 |
05.04.2021 08:04 | greebo | Changeset attached | => DarkRadiant ase_importer d5025a36 |
05.04.2021 08:04 | greebo | Changeset attached | => DarkRadiant ase_importer fa47412c |
05.04.2021 08:04 | greebo | Changeset attached | => DarkRadiant ase_importer d5919511 |
05.04.2021 08:04 | greebo | Changeset attached | => DarkRadiant ase_importer 8a0ce2bf |
05.04.2021 08:04 | greebo | Changeset attached | => DarkRadiant ase_importer 028816b6 |
05.04.2021 08:04 | greebo | Changeset attached | => DarkRadiant ase_importer 46444741 |
05.04.2021 08:04 | greebo | Changeset attached | => DarkRadiant ase_importer 66a7d042 |
05.04.2021 08:04 | greebo | Changeset attached | => DarkRadiant ase_importer 057ff52a |
05.04.2021 08:04 | greebo | Changeset attached | => DarkRadiant ase_importer 685b0e30 |
05.04.2021 08:04 | greebo | Changeset attached | => DarkRadiant ase_importer c9ada4bd |
05.04.2021 08:04 | greebo | Changeset attached | => DarkRadiant ase_importer 63cab5bd |
05.04.2021 08:04 | greebo | Changeset attached | => DarkRadiant ase_importer e2699e91 |
05.04.2021 08:04 | greebo | Changeset attached | => DarkRadiant ase_importer 448f22e2 |
05.04.2021 08:04 | greebo | Changeset attached | => DarkRadiant ase_importer 271f7986 |
05.04.2021 08:04 | greebo | Changeset attached | => DarkRadiant ase_importer 4ecedd14 |
05.04.2021 08:04 | greebo | Changeset attached | => DarkRadiant ase_importer 70c4af29 |
05.04.2021 08:04 | greebo | Changeset attached | => DarkRadiant ase_importer 2dcf027b |
05.04.2021 15:15 | greebo | Changeset attached | => DarkRadiant ase_importer 65638aab |
05.04.2021 15:15 | greebo | Changeset attached | => DarkRadiant ase_importer 1c1c692e |
05.04.2021 15:15 | greebo | Changeset attached | => DarkRadiant ase_importer 678bdd9d |
05.04.2021 15:15 | greebo | Changeset attached | => DarkRadiant ase_importer d175b0f7 |
05.04.2021 15:15 | greebo | Changeset attached | => DarkRadiant ase_importer 09f567e7 |
05.04.2021 15:15 | greebo | Changeset attached | => DarkRadiant ase_importer cef901e1 |
05.04.2021 15:15 | greebo | Changeset attached | => DarkRadiant ase_importer 8aada472 |
05.04.2021 18:41 | greebo | Target Version | => 2.12.0 |
05.04.2021 18:46 | greebo | Changeset attached | => DarkRadiant ase_importer ae69fa53 |
05.04.2021 18:48 | greebo | Status | assigned => resolved |
05.04.2021 18:48 | greebo | Resolution | open => fixed |
05.04.2021 18:48 | greebo | Fixed in Version | => 2.12.0 |
27.11.2021 09:20 | greebo | Status | resolved => closed |