New Feature: RMF Export
Map2Curve can now export the RMF file format (Valves Goldsource based Rich Map Format). RMF Export is furthermore active per default and can be toggled with rmf 0/1
when working with presetfiles.
If you wish to export to MAP as well, you have to activate it with map 1
.
The major improvement in this feature is the fact, that importing MAP files into a Goldsource editor creates certain problems, since it only contains 3 vertices per brush face. The rest of the vertices have to be created by the editor, which almost always comes with a loss of precision for these generated vertices, when working with floating point coordinates. The RMF format again will save all vertices of a face, eradicating this problem entirely and making its usage with Map2Curve so valuable.
map 0 // MAP format export is inactive
New Detail Object Features
A few new commands concerning detail objects have been added in this version, mainly targeting the ability to create circle duplications (or however you would call that).
d_carve – Carving of Detail Brushes
Until now detail objects were rather static and would only be moved and rotated. Carving detail objects now allows for the generation of highly complex seamless curves.
Please note that carving currently only works for the Pi Circle curve type!
Carving can be activated globally or for individual detail groups, using the info_detailgroup entity.
This example uses the following presetfile settings:
flatcircle 1 // the base circle spline will be flattened
d_carve 1 // carving of detail brushes is active
d_autoassign 1 // all unassigned entities in the input file will be added to the same detail object group automatically
d_autoassign – Autoassignment of ungrouped entities
Automatically assigning all ungrouped input map entities to a detail object group makes the manual assignment (adding m2c_d_group
keyvalue to an entity) unnecessary.
I added this since the manual way of creating detail object groups by adding the key m2c_d_group
to an entitys keyvalue list can be a bit exhausting, especially if there is only one detail group you want to use.
One example where this can be useful is for creating circle duplications, where the whole scene basically consists of entities that are part of the same detail group.
Please consider that this command only works globally on all curves of a presetfile at the same time, since it is applied during source file import.
d_circlemode – Precise Circle Spin Mode
Instead of transforming detail objects based on the curve spline, this will rotate them precisely by degree, without compensating the different radius due to low spline resolutions.
d_scale_rand – Random Scaling
As addition to the various random transformations for detail objects we have so far, you can now scale them randomly within a minimum and maximum limit.
The command is being used like similar transformation commands, it holds 3 values, the on/off switch (0/1 – bool) and the min and max value (floats).
Currently it only applies to brushes and a few point entities, that have a “scale” keyvalue, like env_sprite.
Custom Origin
Until now the origin point of a detail object group was simply its center point, which was of course a lack of control.
With the introduction of random scaling and other features concerning detail groups, it became more relevant to define a custom origin point.
Detail objects can be given a custom origin point, using either an ORIGIN-textured brush or a special info_target entity named “ORIGIN” as marker. Both need to be part of the respective detail group of course (hold a m2c_d_group
keyvalue).
Consider that neither of both Origin objects will be exported in the end! If you want ORIGIN brushes to be exported for certain func_ entities (e.g. func_door_rotating), you can use a different texture for that brush temporarily.
Origin Brush
Origin Entity
New Spline Feature: Flat Circle
This will flatten the spline of the Pi circle curve type.
Usually there is no problem with using pointy Pi Circles for generating curves. In certain situations you might need to use a flattened version of that spline, or else the generated brushwork wouldn’t be compatible with the original input scene anymore. This especially applies to the new circle duplication method.
New Bounding Box Type: Hollow Box
Instead of only being able to create a simple bounding box around the whole generated scene, you can now add a hollow box, too.
The box is textured with the “sky” texture, allowing for a quick test-compilation of the generated curve.
Complete Changelog
- Added RMF export per default. Can be toggled with “rmf” 0/1.
- Added carving for detail objects. Can be toggled with “d_carve” (0/1).
- Added ability of custom origin brush and entity for detail objects. Either add an “ORIGIN”-textured brush or an info_target with name-keyvalue “ORIGIN” to a detail group.
- Added random detail object group scaling withing limits. Can be set with “d_scale_rand” similar to other transformation commands:
– d_scale_rand “1 0.5 2” (0/1 min max) - Added automatic assignment of any entity to a detail object group. Can be toggled with “d_autoassign” (0/1) and only works globally at the moment (for all curves at the same time).
- Added flatcircle (0/1) command to make Pi circle flat instead of pointed. Original circle size is being maintained.
- Added another bounding box type: Hollow box. Can be used with “bounds 2”.
- Added a precise circle spin mode for detail objects. Can be toggled with “d_circlemode” (0/1).
- Added vertex welding for carved brushes and fixing of “borderliner” vertex coordinates (e.g. 128.00002 = 128).
- Added 3 beginner PDF tutorials to the tool archive.
- Fixed a problem due to different vertex order of MAP files that were exported from J.A.C.K. editor. M2C would print invalid brush errors without apparent reason.