View Issue Details

IDProjectCategoryView StatusLast Update
0005416DarkRadiantMap Editingpublic17.11.2020 18:17
ReporterMirceaKitsune Assigned To 
PrioritylowSeveritynormalReproducibilitysometimes
Status acknowledgedResolutionopen 
Platformx64OSLinux openSUSEOS VersionRelease
Product Version2.8.0 
Summary0005416: Surface Inspector: Random offsets are sometimes assigned to faces when using Natural
DescriptionThe issue occurs when selecting one or more brushes or faces, opening up the Surface Inspector, then clicking the Natural button under Modify Texture; Every now and then the textures are given an unpredictable offset. This happens even if you draw a simple cube brush, no diagonal edges or faces.

I just drew a brush to confirm this: After clicking Natural 3 times with the whole brush selected, all of its faces were given the offset H = 113, V = 14.
Steps To ReproduceSelect one or more brushes or faces. Press S to open the Surface Inspector. Click the Natural button multiple times: Most of the time the vertical / horizontal offset will be correctly set to 0, 0... sometimes however, a random offset that makes no sense is given to the faces in cause.
Additional InformationAdditionally, the Normalize button next to Natural doesn't seem to do anything in any circumstance and might be broken too. I'm not sure if this is related or another issue, I included it here as it seems related and I'd rather not open another issue for everything.
TagsNo tags attached.

Activities

greebo

greebo

17.11.2020 04:21

administrator   ~0012956

Hm. Can't seem to be able to reproduce this. For me the values always stay at 0, I must have clicked a hundred times in various situations by now.
Maybe you can record it, or send me a sample map and tell me your steps?
MirceaKitsune

MirceaKitsune

17.11.2020 13:36

reporter   ~0012957

Last edited: 17.11.2020 13:39

That's very odd. Could it be build specific, or perhaps tied to a preference? This might make it harder to debug since I'm not sure what on my system might be triggering it.

There doesn't seem to be any map that needs sending: I just opened up DR, drew a brush, selected it or one of its faces, then after clicking Natural 3 times I got the offsets (sometimes it takes more tries).

Here's a screenshot for now. The values you see in the surface inspector weren't input by me: They appeared after i clicked the Natural button a few times.

One thing I just noticed and can add: Whenever this happens on a brush, the offsets being set are apparently always the same. Like for the brush in the screenshot attached, the offset is either 0, 0 (what it should be) or (when the issue occurs) 101, 14... it doesn't matter which face I select either, the same bad offsets are randomly applied to any face I naturalize on that brush. If I draw another brush nearby and repeat the process on it, that brush also gets the same weird values, 101 with 14 here... same if I do it on multiple brushes, start a new map, restart DR, use a different texture on the brush, or pick a different grid size while doing it, also enabling or disabling texture lock doesn't influence it. On a larger and more complex map I'm working on, the only thing that changes is the values of those odd offsets, they seem to differ a bit but otherwise it's always the same thing.
Screenshot_20201117_152403.png (148,305 bytes)   
Screenshot_20201117_152403.png (148,305 bytes)   
greebo

greebo

17.11.2020 13:47

administrator   ~0012958

I notice that you haven't enabled the Texture Lock, something I cannot imagine is useful all the time.
Still, I cannot reproduce the behaviour, I event entered the same values in the entry boxes as you.

On a more general note, I'm not sure where the actual problem is. "Natural" is not even trying to create a 0,0 shift to the faces, it's mean to restore the scale as defined in the entry box, no other guarantees are given.
Also, what's the real-life benefit/loss of this behaviour, even if it was actually producing 0,0? Hitting "Natural" will never give you the final result for any brush you want to texture in a real map, you'll always end up manipulating the texturing in more steps after that, either by the mouse texture copy/paste, or fine-tuning shift, scale and rotation, or in the Texture Tool.
MirceaKitsune

MirceaKitsune

17.11.2020 13:48

reporter   ~0012959

In case it might be preference related, here's my user.xml as well if it's somehow helpful.
user.xml (11,015 bytes)   
<?xml version="1.0"?>
<user>
  <paths>    <enginePath value="/home/mircea/Games/Quake/TheDarkMod/darkmod/"/> <mapPath value="/home/mircea/Games/Quake/TheDarkMod/darkmod/maps/"/> <prefabPath value="/home/mircea/Games/Quake/TheDarkMod/darkmod/prefabs/"/>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         <modPath value="/home/mircea/Games/Quake/TheDarkMod/darkmod/fms/dividing/"/> <modBasePath value=""/>                                                                                                                                                                                                                                                                                                                                                                             </paths>
  <game><type value="The Dark Mod 2.0 (Standalone)"/> <fs_game value="fms/dividing"/> <fs_game_base value=""/> </game>
  <ui><camera><showToolbar value="1"/> <enableCubicClipping value="0"/> <drawMode value="2"/> <toggleFreeMove value="1"/> <cubicScale value="17"/> </camera> <groupDialog><window xPosition="1095" yPosition="0" width="817" height="611"/> <lastShownPage value="textures"/> </groupDialog> <mainFrame><activeLayout value="SplitPane"/> <window xPosition="-4" yPosition="-4" width="1920" height="1052" state="1"/> <embedded><pane name="horizontal" position="946"/><pane name="texcam" position="493"/></embedded> <regular><pane name="horizontal" position="500"/><pane name="texcam" position="350"/></regular> <splitPane><cameraPosition value="0"/>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         <pane name="horizontal" position="890"/><pane name="vertical1" position="481"/><pane name="vertical2" position="481"/><viewTypes topleft="-1" topright="2" bottomleft="0" bottomright="1"/> </splitPane> </mainFrame> <xyview><recent origin="-1696.53 532.003 491.731" scale="1.801440"/> <showEntityNames value="0"/> <chaseMouse value="1"/> <showGrid value="1"/> <showOutline value="0"/> <showEntityAngles value="1"/> <camXYUpdate value="1"/> <higherEntitySelectionPriority value="1"/> <showWorkzone value="0"/> </xyview> <entityInspector><pane position="259"/> <showInheritedProperties value="0"/> <showHelpArea value="1"/> </entityInspector> <layers><controlDialog><window visible="0" xPosition="1670" yPosition="0" width="242" height="236"/> </controlDialog> </layers>  <filtersystem>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             <activeFilter name="Clip Textures"/><activeFilter name="Collision surfaces"/><activeFilter name="Visportals"/><activeFilter name="Weather Textures"/> </filtersystem> <grid><defaultGridPower value="6"/> </grid> <brush><textureLock value="0"/> <emitCSGSubtractWarning value="0"/> </brush> <clipper><caulkTexture value="textures/common/caulk"/> </clipper> <map><maxSnapshotFolderSize value="100"/> <snapshotFolder value="snapshots/"/> <numMRU value="5"/> <loadLastMap value="0"/>    <suppressMapLoadDialog value="0"/>                                                                <autoSaveEnabled value="0"/>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <MRU><map1 value="/home/mircea/Games/Quake/TheDarkMod/darkmod/fms/dividing/maps/dividing.map"/> <map2 value="/home/mircea/Games/Quake/TheDarkMod/darkmod/fms/testing/maps/test.map"/> <map3 value="/home/mircea/Games/Quake/TheDarkMod/darkmod/fms/town/maps/town.map"/> <map4 value="/home/mircea/Games/Quake/TheDarkMod/darkmod/fms/dividing/maps/scroll.map"/> <map5 value="/home/mircea/Games/Quake/TheDarkMod/darkmod/fms/first/maps/first.map"/> </MRU> </map> <textures><defaultTextureScale value="0.250000"/> <browser><mouseWheelIncrement value="64"/> <uniformSize value="128"/> <hideUnused value="0"/> </browser> <shaderChooser><window xPosition="1223" yPosition="61" width="550" height="500"/> </shaderChooser> <surfaceInspector><rotStep value="90"/> <window xPosition="1542" yPosition="0" width="370" height="514"/> <hScaleStep value="0.125"/> <vScaleStep value="0.125"/> <vShiftStep value="8"/> <hShiftStep value="8"/> </surfaceInspector> <findShaderDialog><pickHintShown value="1"/> </findShaderDialog> <texTool><window xPosition="50" yPosition="25" width="400" height="300"/> </texTool> </textures> <patch><subdivideThreshold value="2"/> <patchInspector><sCoordStep value="0.5"/> <tCoordStep value="0.5"/> <window xPosition="1055" yPosition="180" width="280" height="505"/> </patchInspector> </patch> <prefabSelector><splitPos position="0"/> <lastPrefabPath value="/home/mircea/Downloads"/> <recentPaths><path value="/home/mircea/games/quake/thedarkmod/darkmod/fms/scroll"/><path value="/home/mircea/downloads/games"/><path value="/home/mircea/downloads"/></recentPaths> <insertAsGroup value="1"/> </prefabSelector> <transformDialog><rotZStep value="45"/> <rotYStep value="90"/> <rotXStep value="90"/> <window xPosition="1660" yPosition="766" width="260" height="314"/> <scaleXStep value="2"/> <scaleYStep value="2"/> <scaleZStep value="2"/> </transformDialog>  <modelSelector><splitPos position="0"/> </modelSelector> <entityClassChooser><splitPos position="0"/> </entityClassChooser>   <particleEditor><window xPosition="460" yPosition="139" width="1000" height="830"/> </particleEditor> <stimResponseEditor><window xPosition="80" yPosition="100" width="740" height="480"/> </stimResponseEditor> <objectivesEditor><window xPosition="480" yPosition="48" width="948" height="924"/> <conditionsDialog><window xPosition="709" yPosition="245" width="1194" height="636"/> </conditionsDialog> </objectivesEditor> <entityList><window xPosition="1294" yPosition="414" width="539" height="561"/> <focusSelection value="1"/> </entityList> <aas><controlDialog><window xPosition="50" yPosition="25" width="400" height="300" visible="0"/> </controlDialog> </aas> <dragResizeEntitiesSymmetrically value="1"/> <offsetClonedObjects value="1"/> <showAllLightRadii value="0"/> <defaultPivotLocationIgnoresLightVolumes value="1"/> <multiMonitor><startMonitorNum value="0"/> </multiMonitor> <language value="0" volatile="1"/> <commandsystem><binds><bind name="MRUOpen1" value="LoadMRUMap 1"/><bind name="MRUOpen2" value="LoadMRUMap 2"/><bind name="MRUOpen3" value="LoadMRUMap 3"/><bind name="MRUOpen4" value="LoadMRUMap 4"/><bind name="MRUOpen5" value="LoadMRUMap 5"/></binds> </commandsystem> <gameSetup><tdm><fmFolderHistory><folder value="/home/mircea/Games/Quake/TheDarkMod/darkmod/fms/dividing/"/><folder value="/home/mircea/Games/Quake/TheDarkMod/darkmod/fms/testing/"/><folder value="/home/mircea/Games/Quake/TheDarkMod/darkmod/fms/scroll/"/></fmFolderHistory> </tdm> </gameSetup> <snapRotationPivotToGrid value="1"/> <rotationPivotIsOrigin value="1"/> <rotateObjectsIndependently value="0"/> <lightInspector><window xPosition="1140" yPosition="0" width="780" height="400"/> </lightInspector> <showAllSpeakerRadii value="0"/> <exportAsModel><outputFormat value="ASE"/> <outputPath value="/home/mircea/Games/Quake/TheDarkMod/darkmod/fms/testing/models/"/> <skipCaulk value="0"/> <centerObjects value="0"/> <replaceSelectionWithModel value="0"/> <keepEntityOrigin value="0"/> <exportLightsAsObjects value="0"/> </exportAsModel> <aasViewer><showNumbers value="0"/> </aasViewer> </ui>
  <version value="2.9.0"/>
</user>
user.xml (11,015 bytes)   
MirceaKitsune

MirceaKitsune

17.11.2020 13:54

reporter   ~0012960

I only enable Texture Lock when moving prefabs, for brushes with textures that loop fine I prefer leaving it off so offsets stay at 0 or a specific bump I set them to in just one direction.

I usually use Natural to reset the scale of faces to the default and clear any offsets. I thought that's what it's supposed to do, though I can imagine its technical meaning might be a little different. A strange offset randomly appearing when you click the button several times definitely looks like a bug however, that's what I find the issue to be.

Sometimes those random offsets do pose a visual problem too: While they often happen on hidden caulk textures in between brushes, I had an instance where I needed to reset the textures on a building face as they became offset due to this and out of sync with the rest of the wall.
greebo

greebo

17.11.2020 14:16

administrator   ~0012961

Last edited: 17.11.2020 14:18

Well, I for one wouldn't rely on any offsets on any face, only the resulting projection is important. Texture projection onto brush faces doesn't work with these shift values anyway, they are using a transformation matrix, which is the data that is written to the brushDef3 blocks in your map file.

The values in the Surface Inspector are often referred to as "fake" by the code comments in DR, they are reverse-calculated on the basis of the texture projection matrix. Whether the number is 0 or 20 or 15.5 is practically meaningless, it doesn't have to be round at all and it can be ignored most of the time. Just use the buttons to shift the texture around, to fine-tune any visual transitions to other surfaces, but don't get too hung up on these shift values to be 0.

And I'd definitely recommend using the other texturing tools in DR to get your results, don't just select everything and hit "Natural". Rather take one face as starting point and copy/paste it across the neighbouring surfaces, it will automatically create seamless results.
MirceaKitsune

MirceaKitsune

17.11.2020 14:23

reporter   ~0012962

Last edited: 17.11.2020 14:24

Will keep that in mind, thanks for clarifying. I'll still post more info if I can figure out what might be causing the issue on my build, since the odd values appearing is still a bug that should ideally be fixed (the result should always be one and predictable for that particular face, not random). Perhaps try with my user.xml in the meantime, to make sure it's not preference related in some form.

Issue History

Date Modified Username Field Change
16.11.2020 20:15 MirceaKitsune New Issue
16.11.2020 20:27 Judith Priority normal => low
17.11.2020 04:21 greebo Note Added: 0012956
17.11.2020 04:21 greebo Status new => feedback
17.11.2020 13:36 MirceaKitsune Note Added: 0012957
17.11.2020 13:36 MirceaKitsune File Added: Screenshot_20201117_152403.png
17.11.2020 13:36 MirceaKitsune Status feedback => new
17.11.2020 13:39 MirceaKitsune Note Edited: 0012957
17.11.2020 13:47 greebo Note Added: 0012958
17.11.2020 13:48 MirceaKitsune Note Added: 0012959
17.11.2020 13:48 MirceaKitsune File Added: user.xml
17.11.2020 13:54 MirceaKitsune Note Added: 0012960
17.11.2020 14:16 greebo Note Added: 0012961
17.11.2020 14:18 greebo Note Edited: 0012961
17.11.2020 14:23 MirceaKitsune Note Added: 0012962
17.11.2020 14:24 MirceaKitsune Note Edited: 0012962
17.11.2020 18:17 greebo Status new => acknowledged