## GenerateAutomaticUVs

### Introduced

v5.0

### Description

Generates a UV texture coordinate cluster property from the specified generator operator. Only operators that generate mesh or NURBS geometry from input curves are supported (Birail, CrvNet, ExtrusionAlongAxis, Extrusion, ExtrusionTwoProfiles, FourSided, Loft, RevolutionAlongAxis, and Revolution).

### Scripting Syntax

    oReturn = GenerateAutomaticUVs( Operator, Object, [ClusterPropertyName] );

### Return Value

Returns the newly created UV texture coordinate ClusterProperty.

### Parameters

Parameter | Type | Description
--- | --- | ---
Operator | String | Specifies the generator operator from which to create the UV texture coordinates.
Object | String | Specifies the object to which the new UV cluster property will be added.
ClusterPropertyName | String | Specifies the name of the new UV texture coordinate cluster property. Default Value: "" (use Softimage's naming heuristic)

### Examples

#### 1. VBScript Example

    '
    '       This example demonstrates how to generate a NURBS object from curves via the Extrusion operator
    '       and then use that operator to generate UV texture coordinates for the new surface mesh. For a
    '       JScript version, see the next example.
    '
    Dim l_GeneratedUVs
    Dim l_AlreadyGeneratedUVs
    NewScene ,false
    ' Create curve objects that will be used to create surfaces.
    CreatePrim "Circle", "NurbsCurve"
    SetValue "circle.circle.radius", 1
    SICreateCurve "crvlist", 3, 1
    SIAddPointOnCurveAtEnd "crvlist", 0, 0, -3, False, 1
    SIAddPointOnCurveAtEnd "crvlist", 0, 0, -13, False, 1
    SIAddPointOnCurveAtEnd "crvlist", 8, 0, -13, False, 1
    SIAddPointOnCurveAtEnd "crvlist", 8, 0, -3, False, 1
    ' Generate a mesh surface from the curves.
    ApplyGenOp "Extrusion", "MeshSurface", "circle;crvlist", 3, siPersistentOperation, siKeepGenOpInputs
    SetValue "polymsh.polymsh.extrusion.subdivvperspan", 5
    ' Put a material on the generated surface
    ApplyShader , , , , siLetLocalMaterialsOverlap
    SIApplyShaderToCnxPoint "Image", "Sources.Materials.DefaultLib.Material.Phong.diffuse"
    ' Generate automatic UVs.
    set l_GeneratedUVs = GenerateAutomaticUVs( "polymsh.polymsh.extrusion", "polymsh", "AutoUVTxtCoords")
    ' Log name of UV texture coordinate cluster property
    Application.LogMessage "Automatic Generation of UV Texture Coordinates returns the generated cluster property."
    Application.LogMessage "Generated UV Texture Coordinate Cluster Property: " & l_GeneratedUVs.FullName
    ' Trying to regenerate again will log a warning message and the already existing
    ' UV texture coordinate cluster property will be returned.
    ' Generate automatic UVs.
    Application.LogMessage "Regeneration of UV Texture Coordinates generates a warning and the already generated cluster property is returned."
    set l_AlreadyGeneratedUVs = GenerateAutomaticUVs( "polymsh.polymsh.extrusion", "polymsh", "AutoUVTxtCoords")
    'Log name of UV texture coordinate cluster property
    Application.LogMessage "Already Generated UV Texture Coordinate Cluster Property: " &l_AlreadyGeneratedUVs.FullName
    'Logged information and warning by this example.
    'INFO : Automatic Generation of UV Texture Coordinates returns the generated cluster property."
    'INFO : Generated UV Texture Coordinate Cluster Property: polymsh.polymsh.cls.AutomaticSamples.AutoUVTxtCoords
    'INFO : Regeneration of UV Texture Coordinates generates a warning and the already generated cluster property is returned.
    'WARNING : 3000-MODE-GenerateAutomaticUVs - Returning already generated UV texture coordinate cluster property. None re-generated.
    'INFO : Already Generated UV Texture Coordinate Cluster Property: polymsh.polymsh.cls.AutomaticSamples.AutoUVTxtCoords
    ' View results.
    SetDisplayMode "Camera", "texturedecal"

#### 2. JScript Example

    /*
            This example demonstrates how to generate a NURBS object from curves via the Extrusion operator
            and then use that operator to generate UV texture coordinates for the new surface mesh. This
            example is similar to the VBScript version above, except that it uses the object model
            instead of scripting commands.
    */
    var l_GeneratedUVs;
    var l_AlreadyGeneratedUVs;
    NewScene( null, false );
    // Create curve objects that will be used to create surfaces.
    var oCrv = ActiveSceneRoot.AddGeometry( "Circle", "NurbsCurve" );
    oCrv.radius = 1;
    var pnts = new Array( 0,0,-3,1, 0,0,-3,1, 0,0,-3,1, 0,0,-3,1, 0,0,-6.333333333333333,1,
            0,0,-9.666666666666666,1, 0,0,-13,1, 2.6666666666666665,0,-13,1, 5.333333333333333,0,-13,1,
            8,0,-13,1, 8,0,-9.666666666666667,1, 8,0,-6.333333333333334,1, 8,0,-3,1 );
    var oCrvlist = ActiveSceneRoot.AddNurbsCurve( pnts );
    // // Generate a mesh surface from the curves.
    var oGenOp = ApplyGenOp( "Extrusion", "MeshSurface", oCrv + ";" + oCrvlist, 3, siPersistentOperation, siKeepGenOpInputs )(0);
    var oNewMesh = oGenOp.OutputPorts(0).Target2.Parent3DObject;
    oGenOp.subdivvperspan = 5;
    // Put a material on the generated surface
    ApplyShader( null, null, null, null, siLetLocalMaterialsOverlap );
    SIApplyShaderToCnxPoint( "Image", "Sources.Materials.DefaultLib.Material.Phong.diffuse" );
    // Generate automatic UVs.
    l_GeneratedUVs = GenerateAutomaticUVs( oGenOp, oNewMesh, "AutoUVTxtCoords");
    // Log name of UV texture coordinate cluster property
    Application.LogMessage( "Automatic Generation of UV Texture Coordinates returns the generated cluster property." );
    Application.LogMessage( "Generated UV Texture Coordinate Cluster Property: " + l_GeneratedUVs.fullname );
    // Trying to regenerate again will log a warning message and the already existing
    // UV texture coordinate cluster property will be returned.
    // Generate automatic UVs.
    Application.LogMessage( "Regeneration of UV Texture Coordinates generates a warning and the already generated cluster property is returned." );
    l_AlreadyGeneratedUVs = GenerateAutomaticUVs( oGenOp, oNewMesh, "AutoUVTxtCoords");
    // Log name of UV texture coordinate cluster property
    Application.LogMessage( "Already Generated UV Texture Coordinate Cluster Property: " + l_AlreadyGeneratedUVs.fullname );
    // Logged information and warning by this example.
    //INFO : Automatic Generation of UV Texture Coordinates returns the generated cluster property."
    //INFO : Generated UV Texture Coordinate Cluster Property: polymsh.polymsh.cls.AutomaticSamples.AutoUVTxtCoords
    //INFO : Regeneration of UV Texture Coordinates generates a warning and the already generated cluster property is returned.
    //WARNING : 3000-MODE-GenerateAutomaticUVs - Returning already generated UV texture coordinate cluster property. None re-generated.
    //INFO : Already Generated UV Texture Coordinate Cluster Property: polymsh.polymsh.cls.AutomaticSamples.AutoUVTxtCoords
    // View results.
    SetDisplayMode( "Camera", "texturedecal" );

### See Also

ApplyGenOp