Map2Curve v0.7 Readme

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.

rmf 1 // RMF format export is active
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:

type 0 // Curve type needs to be “Pi Circle”
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_autoassign 1 // all ungrouped entities will be added to the same group automatically

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_circlemode 1 // activates simple circle rotation for the respective detail object group

d_scale_rand – Random Scaling

Example of random scaling for detail objects

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.

d_scale_rand “1 0.5 3.25” // scales the detail group randomly within the given limits

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”-textured Brush
Origin Entity
Origin Point Entity (info_target)

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.

flatcircle 1 // flattens the spline of curve type 0 (Pi Circle)

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.

bounds 2 // generates a hollow sky box around the scene

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.