Transform UVs with CallUVCommand

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 13/04/2010 at 04:18, xxxxxxxx wrote:

User Information:
Cinema 4D Version:    
Platform:      
Language(s) :

---------
Hi,
I am trying to Transform the UV-Coordinates I generated with the CallUVCommand Function (c4d_painter).

This works fine but if I try to transform the UV-Coords it doesn't have any effect although the function returns TRUE..
Here is the Code, I would be grateful for any help.

------------------------------------------------------------
TempUVHandle *handle = GetActiveUVSet(GetActiveDocument(), GETACTIVEUVSET_ALL);

settings.SetBool(OPTIMALMAPPING_STRETCHTOFIT, FALSE);
     settings.SetReal(OPTIMALMAPPING_DISTORTION, Rad(50.0));
     settings.SetReal(OPTIMALMAPPING_SPACING, Rad(0.0));
     settings.SetBool(OPTIMALMAPPING_PROGRESSBAR, TRUE);
     settings.SetLong(OPTIMALMAPPING_RELAXCOUNT, 0);

CallUVCommand(points, nPoints, polygons, nPolygons,
     uvwStructs, baseSelects[iSelection], pointSel, po,
     Muvpolygons, UVCOMMAND_OPTIMALMAPPING, settings);

BaseContainer settings1;
settings1.SetReal(UVCOMMAND_TRANSFORM_SCALE_X, 10.0);//scaleFactor);
settings1.SetReal(UVCOMMAND_TRANSFORM_SCALE_Y, 11.0);
     
CallUVCommand(points, nPoints, polygons, nPolygons,
          uvwStructs, baseSelects[iSelection], pointSel, po,
          Muvpolygons, UVCOMMAND_TRANSFORM, settings1);

handle->SetUVW(uvwStructs);

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 13/04/2010 at 06:38, xxxxxxxx wrote:

I don't exactly know what is wrong with your code but the following test code works fine for me.

  
Bool MenuTest::Execute(BaseDocument *doc)  
{  
  BaseObject *op = doc->GetActiveObject();  
  if (!op || op->GetType() != Opolygon)  
      return FALSE;  
  
  BaseContainer settings, settings1;  
  TempUVHandle *handle = NULL;  
  
  handle = GetActiveUVSet(doc, GETACTIVEUVSET_ALL);  
  if (!handle)  
      goto Error;  
  
  settings.SetBool(OPTIMALMAPPING_PRESERVEORIENTATION, FALSE);  
  settings.SetBool(OPTIMALMAPPING_STRETCHTOFIT, FALSE);  
  settings.SetReal(OPTIMALMAPPING_DISTORTION, Rad(50.0));  
  settings.SetReal(OPTIMALMAPPING_SPACING, 2.0);  
  settings.SetBool(OPTIMALMAPPING_PROGRESSBAR, TRUE);  
  settings.SetLong(OPTIMALMAPPING_RELAXCOUNT, 1);  
  
  
  
  if (!CallUVCommand(handle->GetPoint(), handle->GetPointCount(), handle->GetPoly(), handle->GetPolyCount(),  
      handle->GetUVW(), handle->GetPolySel(), handle->GetUVPointSel(), handle->GetBaseObject(), handle->GetMode(),  
      UVCOMMAND_OPTIMALMAPPING, settings))  
      goto Error;  
  
  handle->SetUVW(handle->GetUVW());  
  
  settings1.SetReal(UVCOMMAND_TRANSFORM_MOVE_X, 0.0);  
  settings1.SetReal(UVCOMMAND_TRANSFORM_MOVE_Y, 0.0);  
  settings1.SetReal(UVCOMMAND_TRANSFORM_SCALE_X, 10.0);  
  settings1.SetReal(UVCOMMAND_TRANSFORM_SCALE_Y, 11.0);  
  settings1.SetReal(UVCOMMAND_TRANSFORM_ANGLE, 0.0);  
  
  if (!CallUVCommand(handle->GetPoint(), handle->GetPointCount(), handle->GetPoly(), handle->GetPolyCount(),  
      handle->GetUVW(), handle->GetPolySel(), handle->GetUVPointSel(), handle->GetBaseObject(), handle->GetMode(),  
      UVCOMMAND_TRANSFORM, settings1))  
      goto Error;  
  
  handle->SetUVW(handle->GetUVW());  
  
  FreeActiveUVSet(handle);  
  
  return TRUE;  
  
Error:  
  FreeActiveUVSet(handle);  
  return FALSE;  
}  

cheers,
Matthias

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 14/04/2010 at 02:14, xxxxxxxx wrote:

Thanks a lot, got it working now :)