Announcement

Collapse
No announcement yet.

UDK Layout Tool v1.0.5.0

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    UDK Layout Tool v1.0.5.0

    Introduction

    The UDK Layout Tool is similar to Maya's Duplicate Special dialog window.

    You can copy any Unreal Actor which has been placed in the Unreal Editor. If you copy more than one object, the modifiers are applied to each object. Once copied, open the UDK Layout tool, and apply the necessary modifiers:
    1. Translate (X, Y, Z)
    2. Rotate (Pitch, Yaw, Roll) - [From -360 to +360 degrees]
    3. Scale (X, Y, Z)
    4. Pre-Pivot (X, Y, Z)

    Any non-zero value applied to a modifier will be added or subtracted to each & every new object that is created e.g. If X-Scale is set to 1.0, and the copied object has scale 1.0, then new objects will have their X-Scale as 2.0, 3.0, 4.0 ... & so on.

    Once the required modifiers have been applied, along with an optional Group Name, press Enter, or click the 'Generate Objects' button to create the objects. You can then paste the objects in the Unreal Editor.

    Screenshot (v1.0.5.0):
    [SHOT]http://img138.imageshack.us/img138/3217/udklayouttoolv1050.jpg[/SHOT]

    Randomize Section

    You can randomize any of the 12 modifiers using the Check boxes. When using any random check box, its corresponding 'Modifiers' value is used as the Random range e.g. if Translate X is to be randomized, and Translate modifier is 100, then the resultant values of Translate X for each object will be modified anywhere from -100 to +100. However, if the 'Positive Range' option is selected, then the random range will be from 0 to the Modifier's value.

    The Uniform Scale option can be used to randomly distribute uniformly scaled copies of an object. When selected, use the X and Z Scale values to define the minimum and maximum Uniform Scale values of the resulting objects.

    Continuous Modifiers

    When multiple objects are created, you have an option to apply the modifiers every time per object, OR by accumulating the modifier values e.g. If the 'Translate' continuous modifiers are unchecked for objects that are have Random Translation, then the objects will be generated 'Around' the original object, otherwise, the location values will keep accumulating per object.

    This section is useful only when used together with the Randomize flags

    NOTES:
    • It's advisable to create not more than a thousand objects at a time, as it'll be slow to generate & slow for the engine too.
    • If you need to create objects in a circle, change the Pre-Pivot of the object to the center of the required circle before copying it. Use the pre-pivot modifier values for spirals.
    • To retain a custom Group Name imported from the editor, leave the 'Group Name' field blank before pressing the 'Generate Objects' button
    • The 'Mode' dropdown will allow you to quickly switch between addition and subtraction of modifier values.
    • In Uniform Scale mode, the minimum scale value can over-ride the original object's scale

    Changelog:

    #2
    Very cool, thanks!

    I got some issues though. The first few times I did it I got an error, but then after that it worked just fine. I don't know what I did differently the first few times.

    See the end of this message for details on invoking
    just-in-time (JIT) debugging instead of this dialog box.

    ************** Exception Text **************
    System.Runtime.InteropServices.ExternalException: Requested Clipboard operation did not succeed.
    at System.Windows.Forms.Clipboard.ThrowIfFailed(Int32 hr)
    at System.Windows.Forms.Clipboard.SetDataObject(Objec t data, Boolean copy, Int32 retryTimes, Int32 retryDelay)
    at System.Windows.Forms.Clipboard.SetText(String text, TextDataFormat format)
    at System.Windows.Forms.Clipboard.SetText(String text)
    at a.a(Object A_0, RunWorkerCompletedEventArgs A_1)
    at System.ComponentModel.BackgroundWorker.OnRunWorker Completed(RunWorkerCompletedEventArgs e)
    at System.ComponentModel.BackgroundWorker.AsyncOperat ionCompleted(Object arg)


    ************** Loaded Assemblies **************
    mscorlib
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.3603 (GDR.050727-3600)
    CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
    ----------------------------------------
    UDKLayoutTool
    Assembly Version: 1.0.0.0
    Win32 Version: 1.0.0.0
    CodeBase: file:///E:/UDK/TheBallFinal/Binaries/UDKLayoutTool.exe
    ----------------------------------------
    System.Windows.Forms
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
    ----------------------------------------
    System
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
    ----------------------------------------
    System.Drawing
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
    ----------------------------------------
    Accessibility
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/Accessibility/2.0.0.0__b03f5f7f11d50a3a/Accessibility.dll
    ----------------------------------------
    System.Configuration
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
    ----------------------------------------
    System.Xml
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.3082 (QFE.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
    ----------------------------------------

    ************** JIT Debugging **************
    To enable just-in-time (JIT) debugging, the .config file for this
    application or computer (machine.config) must have the
    jitDebugging value set in the system.windows.forms section.
    The application must also be compiled with debugging
    enabled.

    For example:

    <configuration>
    <system.windows.forms jitDebugging="true" />
    </configuration>

    When JIT debugging is enabled, any unhandled exception
    will be sent to the JIT debugger registered on the computer
    rather than be handled by this dialog box.
    Scale was somewhat confusing, as it is a multiplier or something. It is the 0 that makes it confusing. In general scale works weird. I did scale x 0.5, no random flags. Translate 512 x. No random anywhere. If I generate that I get a row of meshes that go from small to big. It added 0.5 scale for every mesh it made. so it was 1 1.5 2 2.5 3 3.5 etc.

    Could consider adding a Group property, so you can enter a group name for the array you are about to create. You will sometimes have a lot of actors in these arrays so being able to automatically group things would probably be cool.

    If you paste in multiple actors it will go wrong, it will ignore all but one.

    Regarding rotation, modified pivot points do get exported to T3D, you have to use PrePivot in Display for this. Your tool at the moment does not support this property however, it will reset it back to 0 as soon as you paste it back in. If you'd add a XYZ Pre Pivot property to the tool then you would be able to set the diameter of the circle within the tool.

    Your tool even works in UE1 by the way!

    Keep it up!

    Comment


      #3
      Thanks for the feedback!

      Originally posted by Hourences View Post
      Scale was somewhat confusing, as it is a multiplier or something. It is the 0 that makes it confusing. ..... It added 0.5 scale for every mesh it made. so it was 1 1.5 2 2.5 3 3.5 etc.
      Scale works like all other modifiers. It adds/subtracts the modifier value to every object, so the results you get are as expected. Use modifiers only when you want incremental changes to all new objects. Initial changes should all be done before importing from the Editor.
      Originally posted by Hourences View Post
      Could consider adding a Group property, so you can enter a group name for the array you are about to create.
      Thanks for the idea. Group name option has been added.
      Originally posted by Hourences View Post
      If you paste in multiple actors it will go wrong, it will ignore all but one.
      I had already mentioned about this in the original post. Only single objects are supported as of now. I might fix this later.
      Originally posted by Hourences View Post
      Regarding rotation, modified pivot points do get exported to T3D, you have to use PrePivot in Display for this.
      Thanks for pointing it out. I didn't know it was exported. I've added modifiers for Pre-Pivot.

      Comment


        #4
        That actually sounds very cool and very useful. I'll give it a go later...

        Comment


          #5
          Updated to v1.0.3.0, allowing multiple objects to be transformed in one go.

          Comment


            #6
            Works really well, thanks!

            I do have trouble with Random though, I put x and y location to 512 for example, enabled random on x and y, and then I expect it to pretty much just scatter it around in a 1024x1024 box, right? And it doesn't do that. That also goes for scale. If I enable random it still builds up from small to big. I want true randomness within a certain range.

            What I am trying to do as a test is to generate a lane of trees. Where each tree has a different scale and rotation. For something like that having a uniform scale option would be very welcome by the way, as you can't really scale trees non uniform in a random fashion, you'd get really weird trees or too little difference between each tree.

            I will **** this and the frontend on my site when I finally get to update it later this month or next month!

            Comment


              #7
              Originally posted by Hourences View Post
              I put x and y location to 512 for example, enabled random on x and y, and then I expect it to pretty much just scatter it around in a 1024x1024 box, right?
              That wasn't possible in the old version, as the modifier value would keep accumulating for each object.

              In v1.0.5.0, by keeping the X, Y continuous modifier flags unchecked, you can achieve that effect. You can also use the Uniform scale option to scale objects within a range (X-Scale and Z-Scale are min and max scale for each new object).

              Comment


                #8
                Thanks!
                Will try it out soon.

                Comment


                  #9
                  Thanks a lot!

                  Comment


                    #10
                    Hello there!
                    I have an unhandled exception when I copy object in udk and click generate.
                    It says "Input string was not in a correct format." I use *.ase


                    See the end of this message for details on invoking
                    just-in-time (JIT) debugging instead of this dialog box.

                    ************** Exception Text **************
                    System.FormatException: Input string was not in a correct format.
                    at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
                    at System.Number.ParseDouble(String value, NumberStyles options, NumberFormatInfo numfmt)
                    at System.Double.Parse(String s, NumberStyles style, NumberFormatInfo info)
                    at a.a(String A_0, Vector3& A_1)
                    at a.c()
                    at a.c(Object A_0, EventArgs A_1)
                    at System.Windows.Forms.Control.OnClick(EventArgs e)
                    at System.Windows.Forms.Button.OnClick(EventArgs e)
                    at System.Windows.Forms.Button.OnMouseUp(MouseEventAr gs mevent)
                    at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
                    at System.Windows.Forms.Control.WndProc(Message& m)
                    at System.Windows.Forms.ButtonBase.WndProc(Message& m)
                    at System.Windows.Forms.Button.WndProc(Message& m)
                    at System.Windows.Forms.Control.ControlNativeWindow.O nMessage(Message& m)
                    at System.Windows.Forms.Control.ControlNativeWindow.W ndProc(Message& m)
                    at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


                    ************** Loaded Assemblies **************
                    mscorlib
                    Assembly Version: 2.0.0.0
                    Win32 Version: 2.0.50727.4952 (win7RTMGDR.050727-4900)
                    CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
                    ----------------------------------------
                    UDKLayoutTool
                    Assembly Version: 1.0.5.0
                    Win32 Version: 1.0.5.0
                    CodeBase: file:///D:/User/Desktop/UDKLayoutTool.exe
                    ----------------------------------------
                    System.Windows.Forms
                    Assembly Version: 2.0.0.0
                    Win32 Version: 2.0.50727.4927 (NetFXspW7.050727-4900)
                    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
                    ----------------------------------------
                    System
                    Assembly Version: 2.0.0.0
                    Win32 Version: 2.0.50727.4927 (NetFXspW7.050727-4900)
                    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
                    ----------------------------------------
                    System.Drawing
                    Assembly Version: 2.0.0.0
                    Win32 Version: 2.0.50727.4927 (NetFXspW7.050727-4900)
                    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
                    ----------------------------------------
                    Accessibility
                    Assembly Version: 2.0.0.0
                    Win32 Version: 2.0.50727.4927 (NetFXspW7.050727-4900)
                    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/Accessibility/2.0.0.0__b03f5f7f11d50a3a/Accessibility.dll
                    ----------------------------------------
                    System.Configuration
                    Assembly Version: 2.0.0.0
                    Win32 Version: 2.0.50727.4927 (NetFXspW7.050727-4900)
                    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
                    ----------------------------------------
                    System.Xml
                    Assembly Version: 2.0.0.0
                    Win32 Version: 2.0.50727.4927 (NetFXspW7.050727-4900)
                    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
                    ----------------------------------------

                    ************** JIT Debugging **************
                    To enable just-in-time (JIT) debugging, the .config file for this
                    application or computer (machine.config) must have the
                    jitDebugging value set in the system.windows.forms section.
                    The application must also be compiled with debugging
                    enabled.

                    For example:

                    <configuration>
                    <system.windows.forms jitDebugging="true" />
                    </configuration>

                    When JIT debugging is enabled, any unhandled exception
                    will be sent to the JIT debugger registered on the computer
                    rather than be handled by this dialog box.

                    Comment


                      #11
                      Could you show what text was present on your clipboard before you clicked the Generate Objects button?

                      Comment


                        #12
                        Thanks for this great tool .. very useful.

                        Comment


                          #13
                          Hello,

                          I've run in to same problem, whenever trying to generate program crashes with error message "input string was not in correct format". I think this is due the .net string to number conversion differences in regions. Example below:

                          Code:
                          Begin Map
                             Begin Level
                                Begin Actor Class=StaticMeshActor Name=StaticMeshActor_1 Archetype=StaticMeshActor'Engine.Default__StaticMeshActor'
                                   Begin Object Class=StaticMeshComponent Name=StaticMeshComponent0 ObjName=StaticMeshComponent_2 Archetype=StaticMeshComponent'Engine.Default__StaticMeshActor:StaticMeshComponent0'
                                      StaticMesh=StaticMesh'ASC_Floor2.SM.Mesh.S_ASC_Floor2_SM_Stairs_Simple_03'
                                      ReplacementPrimitive=None
                                      bAllowApproximateOcclusion=True
                                      bForceDirectLightMap=True
                                      bUsePrecomputedShadows=True
                                      LightingChannels=(bInitialized=True,Static=True)
                                      Name="StaticMeshComponent_2"
                                      ObjectArchetype=StaticMeshComponent'Engine.Default__StaticMeshActor:StaticMeshComponent0'
                                   End Object
                                   StaticMeshComponent=StaticMeshComponent'StaticMeshComponent_2'
                                   Components(0)=StaticMeshComponent'StaticMeshComponent_2'
                                   Location=(X=2128.000000,Y=736.000000,Z=-2176.000000)
                                   CreationTime=677.451904
                                   Tag="StaticMeshActor"
                                   CollisionComponent=StaticMeshComponent'StaticMeshComponent_2'
                                   Name="StaticMeshActor_1"
                                   ObjectArchetype=StaticMeshActor'Engine.Default__StaticMeshActor'
                                End Actor
                             End Level
                          Begin Surface
                          End Surface
                          End Map
                          Is the original creator still interested in looking to this?

                          Comment


                            #14
                            Well, for a quick fix that should work, you can change your local settings to English(US) and avoid the crash.

                            Comment


                              #15
                              Hourences sent me here--I have long hoped for a tool like this. Thanks!

                              Comment

                              Working...
                              X