View Issue Details

IDProjectCategoryView StatusLast Update
0005773DarkRadiantMap Editingpublic02.04.2022 05:56
Reportergreebo Assigned Togreebo  
PrioritynormalSeveritynormalReproducibilityhave not tried
Status closedResolutionfixed 
Product Version2.13.0 
Target Version2.14.0Fixed in Version2.14.0 
Summary0005773: Improve Texture Locked brush transformations
DescriptionWhen transforming brush faces (translations, rotations, etc.) the texture coordinates tend to be shot into the far ends of the UV space (see issue 0005547).
Ideally, the texture lock transformation should not change the UV coordinates at all.
TagsNo tags attached.

Relationships

child of 0005547 closedgreebo Bring texture coordinates closer to 0,0 

Activities

greebo

greebo

08.10.2021 07:59

administrator   ~0014417

texture_locked_rotation.gif (1,094,865 bytes)

Related Changesets

DarkRadiant: master 36d5e160

08.10.2021 09:09

greebo


Details Diff
0005773: After undo/redo the windings need to be updated otherwise the texture tool will render outdated coords Affected Issues
0005773
mod - radiantcore/brush/BrushNode.cpp Diff File
mod - radiantcore/brush/BrushNode.h Diff File

DarkRadiant: master cd6f156d

08.10.2021 18:11

greebo


Details Diff
0005773: Change IFace interface to return a Matrix3 instance instead of Matrix4 for the texture projection (which has only 6 nontrivial components anyway). Affected Issues
0005773
mod - include/ibrush.h Diff File
mod - radiantcore/brush/Face.cpp Diff File
mod - radiantcore/brush/Face.h Diff File
mod - radiantcore/brush/TextureMatrix.cpp Diff File
mod - radiantcore/brush/TextureMatrix.h Diff File
mod - radiantcore/brush/TextureProjection.cpp Diff File
mod - radiantcore/brush/TextureProjection.h Diff File
mod - test/Brush.cpp Diff File
mod - test/TextureManipulation.cpp Diff File

DarkRadiant: master e4657b73

08.10.2021 18:18

greebo


Details Diff
0005773: Privatise the TextureProjection::setTransform method accepting a Matrix4, it's only used internally. Affected Issues
0005773
mod - radiantcore/brush/TextureProjection.cpp Diff File
mod - radiantcore/brush/TextureProjection.h Diff File

DarkRadiant: master 34b70657

08.10.2021 18:33

greebo


Details Diff
0005773: Add a unit test checking the generated XML code of a defined exported brush. It's a very specific test using a verbatim string. If this test breaks a lot, it needs to be improved to check specific properties of the generated XML tags. Affected Issues
0005773
mod - test/MapExport.cpp Diff File

DarkRadiant: master a4a47664

08.10.2021 18:43

greebo


Details Diff
0005773: About to change the brush exporter code to use IFace::getProjectionMatrix() instead of getTexDefMatrix() Affected Issues
0005773
mod - include/ibrush.h Diff File
mod - libs/math/Matrix3.h Diff File
mod - radiantcore/brush/Face.cpp Diff File
mod - radiantcore/brush/Face.h Diff File

DarkRadiant: master 2e09e486

08.10.2021 18:57

greebo


Details Diff
0005773: Refactor the primitive exporters to use the IFace::getProjectionMatrix() method which delivers a 3x3 matrix Affected Issues
0005773
mod - libs/texturelib.h Diff File
mod - radiantcore/map/format/portable/PortableMapWriter.cpp Diff File
mod - radiantcore/map/format/primitivewriters/BrushDef3Exporter.h Diff File
mod - radiantcore/map/format/primitivewriters/BrushDefExporter.h Diff File
mod - radiantcore/map/format/primitivewriters/LegacyBrushDefExporter.h Diff File

DarkRadiant: master 8e9b2d5f

08.10.2021 19:04

greebo


Details Diff
0005773: Remove IFace::getTexDefMatrix(), is superseded by IFace::getProjectionMatrix() Affected Issues
0005773
mod - include/ibrush.h Diff File
mod - radiantcore/brush/BrushNode.cpp Diff File
mod - radiantcore/brush/Face.cpp Diff File
mod - radiantcore/brush/Face.h Diff File

DarkRadiant: master 8f381f0f

09.10.2021 04:28

greebo


Details Diff
0005773: Refactoring, privatise the TextureMatrix member in TextureProjection. The Face class is an exception and still accesses the field directly. Affected Issues
0005773
mod - radiantcore/brush/Face.cpp Diff File
mod - radiantcore/brush/TextureProjection.cpp Diff File
mod - radiantcore/brush/TextureProjection.h Diff File

DarkRadiant: master 0e09a990

09.10.2021 04:41

greebo


Details Diff
0005773: Replace friend declaration with two accessors to the internal TextureMatrix instance Affected Issues
0005773
mod - radiantcore/brush/Face.cpp Diff File
mod - radiantcore/brush/TextureProjection.cpp Diff File
mod - radiantcore/brush/TextureProjection.h Diff File

DarkRadiant: master 1c308bf7

09.10.2021 04:59

greebo


Details Diff
0005773: Change IBrush::addFace interface to accept a 3x3 matrix as texture projection instead of Matrix4. Affected Issues
0005773
mod - include/ibrush.h Diff File
mod - libs/texturelib.h Diff File
mod - radiantcore/brush/Brush.cpp Diff File
mod - radiantcore/brush/Brush.h Diff File
mod - radiantcore/brush/Face.cpp Diff File
mod - radiantcore/brush/Face.h Diff File
mod - radiantcore/brush/TextureProjection.cpp Diff File
mod - radiantcore/brush/TextureProjection.h Diff File
mod - radiantcore/map/format/portable/PortableMapReader.cpp Diff File
mod - radiantcore/map/format/primitiveparsers/BrushDef.cpp Diff File
mod - radiantcore/map/format/primitiveparsers/BrushDef.h Diff File
mod - radiantcore/map/format/primitiveparsers/BrushDef3.cpp Diff File

DarkRadiant: master 6e0af0ec

09.10.2021 05:18

greebo


Details Diff
0005773: TextureMatrix no longer exposes the 6 doubles it holds Affected Issues
0005773
mod - radiantcore/brush/Face.cpp Diff File
mod - radiantcore/brush/TexDef.h Diff File
mod - radiantcore/brush/TextureMatrix.cpp Diff File
mod - radiantcore/brush/TextureMatrix.h Diff File
mod - radiantcore/brush/TextureProjection.cpp Diff File

DarkRadiant: master cc23e5f2

09.10.2021 05:23

greebo


Details Diff
0005773: TextureMatrix no longer references Matrix4 Affected Issues
0005773
mod - radiantcore/brush/TextureMatrix.cpp Diff File
mod - radiantcore/brush/TextureMatrix.h Diff File
mod - radiantcore/brush/TextureProjection.cpp Diff File

DarkRadiant: master e76916e3

09.10.2021 06:21

greebo


Details Diff
0005773: Remove unused TexDef::getTransform() which was *almost* the same as the code in the TextureMatrix(const TexDef& texdef) constructor. Affected Issues
0005773
mod - radiantcore/brush/TexDef.cpp Diff File
mod - radiantcore/brush/TexDef.h Diff File
mod - radiantcore/brush/TextureMatrix.cpp Diff File
mod - radiantcore/brush/TextureMatrix.h Diff File
mod - radiantcore/brush/TextureProjection.h Diff File

DarkRadiant: master 4b5bcfce

09.10.2021 06:38

greebo


Details Diff
0005773: Refactoring TexDef to maintain an actual ShiftScaleRotate structure as private member instead of the separate fields which are mapped all over the place. TextureMatrix no longer refers to TexDef, instead it can operate on the lower-level ShiftScaleRotation structure. Affected Issues
0005773
mod - radiantcore/brush/Face.cpp Diff File
mod - radiantcore/brush/TexDef.cpp Diff File
mod - radiantcore/brush/TexDef.h Diff File
mod - radiantcore/brush/TextureMatrix.cpp Diff File
mod - radiantcore/brush/TextureMatrix.h Diff File
mod - radiantcore/brush/TextureProjection.cpp Diff File
mod - radiantcore/brush/TextureProjection.h Diff File

DarkRadiant: master 7857cfab

09.10.2021 06:44

greebo


Details Diff
0005773: Remove TexDef adapter methods - the client code in Face::setTexdef is no longer used either Affected Issues
0005773
mod - radiantcore/brush/Face.cpp Diff File
mod - radiantcore/brush/Face.h Diff File
mod - radiantcore/brush/TexDef.cpp Diff File
mod - radiantcore/brush/TexDef.h Diff File

DarkRadiant: master 13a60a10

09.10.2021 06:57

greebo


Details Diff
0005773: Remove the entire TexDef class. Turns out it's no longer used by anything. Affected Issues
0005773
mod - radiantcore/CMakeLists.txt Diff File
mod - radiantcore/brush/BrushModule.h Diff File
mod - radiantcore/brush/BrushNode.h Diff File
rm - radiantcore/brush/TexDef.cpp Diff
rm - radiantcore/brush/TexDef.h Diff
mod - radiantcore/map/RegionManager.cpp Diff File
mod - radiantcore/patch/Patch.h Diff File
mod - radiantcore/selection/algorithm/Shader.h Diff File
mod - tools/msvc/DarkRadiantCore.vcxproj Diff File
mod - tools/msvc/DarkRadiantCore.vcxproj.filters Diff File

DarkRadiant: master 35be7172

09.10.2021 07:08

greebo


Details Diff
0005773: Add copy constructors and assignment operators to TextureMatrix and TextureProjection. TextureProjection::Default() is now private. Affected Issues
0005773
mod - radiantcore/brush/Face.cpp Diff File
mod - radiantcore/brush/TextureMatrix.cpp Diff File
mod - radiantcore/brush/TextureMatrix.h Diff File
mod - radiantcore/brush/TextureProjection.cpp Diff File
mod - radiantcore/brush/TextureProjection.h Diff File

DarkRadiant: master d1ce07ff

09.10.2021 07:18

greebo


Details Diff
0005773: Add complement TextureProjection::getShiftScaleRotation(), to avoid having to access the inner TextureMatrix. Affected Issues
0005773
mod - radiantcore/brush/Face.cpp Diff File
mod - radiantcore/brush/TextureProjection.cpp Diff File
mod - radiantcore/brush/TextureProjection.h Diff File

DarkRadiant: master c4a89cfe

09.10.2021 07:30

greebo


Details Diff
0005773: Add dedicated TextureProjection constructor to create a projection that matches the default texture scale for the given image. Affected Issues
0005773
mod - radiantcore/brush/Face.cpp Diff File
mod - radiantcore/brush/TextureProjection.cpp Diff File
mod - radiantcore/brush/TextureProjection.h Diff File
mod - radiantcore/selection/algorithm/Shader.cpp Diff File

Issue History

Date Modified Username Field Change
08.10.2021 07:52 greebo New Issue
08.10.2021 07:53 greebo Relationship added related to 0005547
08.10.2021 07:53 greebo Assigned To => greebo
08.10.2021 07:53 greebo Status new => assigned
08.10.2021 07:59 greebo Note Added: 0014417
08.10.2021 07:59 greebo File Added: texture_locked_rotation.gif
08.10.2021 07:59 greebo Relationship replaced child of 0005547
08.10.2021 07:59 greebo Status assigned => resolved
08.10.2021 07:59 greebo Resolution open => fixed
08.10.2021 07:59 greebo Fixed in Version => 2.14.0
08.10.2021 09:09 greebo Changeset attached => DarkRadiant master 36d5e160
08.10.2021 19:34 greebo Changeset attached => DarkRadiant master cd6f156d
08.10.2021 19:34 greebo Changeset attached => DarkRadiant master e4657b73
08.10.2021 19:34 greebo Changeset attached => DarkRadiant master 34b70657
08.10.2021 19:34 greebo Changeset attached => DarkRadiant master a4a47664
08.10.2021 19:34 greebo Changeset attached => DarkRadiant master 2e09e486
08.10.2021 19:34 greebo Changeset attached => DarkRadiant master 8e9b2d5f
09.10.2021 05:23 greebo Changeset attached => DarkRadiant master 8f381f0f
09.10.2021 05:23 greebo Changeset attached => DarkRadiant master 0e09a990
09.10.2021 05:23 greebo Changeset attached => DarkRadiant master 1c308bf7
09.10.2021 05:23 greebo Changeset attached => DarkRadiant master 6e0af0ec
09.10.2021 05:23 greebo Changeset attached => DarkRadiant master cc23e5f2
09.10.2021 06:58 greebo Changeset attached => DarkRadiant master e76916e3
09.10.2021 06:58 greebo Changeset attached => DarkRadiant master 4b5bcfce
09.10.2021 06:58 greebo Changeset attached => DarkRadiant master 7857cfab
09.10.2021 06:58 greebo Changeset attached => DarkRadiant master 13a60a10
09.10.2021 07:32 greebo Changeset attached => DarkRadiant master 35be7172
09.10.2021 07:32 greebo Changeset attached => DarkRadiant master d1ce07ff
09.10.2021 07:32 greebo Changeset attached => DarkRadiant master c4a89cfe
02.04.2022 05:56 greebo Status resolved => closed