View Issue Details

IDProjectCategoryView StatusLast Update
0005576DarkRadiantModelspublic27.11.2021 09:20
Reportergreebo Assigned Togreebo  
PrioritynormalSeveritynormalReproducibilityalways
Status closedResolutionfixed 
Product Version2.11.0 
Target Version2.12.0Fixed in Version2.12.0 
Summary0005576: ASE importer needs to handle shared vertices with different normals
DescriptionThe 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 InformationSee 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.
TagsNo 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
}
testcube.ase (6,511 bytes)   

Activities

Related Changesets

DarkRadiant: ase_importer 543bf75f

04.04.2021 03:37

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

greebo


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

Issue History

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