Create a UVWTag in C.O.F.F.E.E.
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 30/05/2003 at 15:51, xxxxxxxx wrote:
User Information:
Cinema 4D Version: 8.100
Platform:
Language(s) : C.O.F.F.E.E ;---------
Hello everybody.
If anyone have an example of how to create and apply a UVWTag to a polygonobject using C.O.F.F.E.E I'd really like to see it.
I have succeeded in applying the tag but cinema crashes when I try to use it (View it with bodypaint or apply a texture). I assume that I'm filling the tag with corrupt data or miss something when I apply it to the object.
Is the UVWCoords ranging from (float) 0-1 on each axis or (integer) width, height of the texture?
(Pardon my bad english but it's late and I'm tired and frustrated)
Regards / Feccand -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 01/06/2003 at 11:52, xxxxxxxx wrote:
Sorry, but this is impossible in C.O.F.F.E.E. due to the cannot-create-VariableTags limitation. It should be possible to manipulate UVWTags that C4D has created.
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 01/06/2003 at 15:24, xxxxxxxx wrote:
Actually it is quite possible.
With help from the cg-talk forum I resolved the issue.
Here is a small example to show how it is done.main(doc,op) { var checktag = op->GetFirstTag(); while(checktag) { if(checktag->GetType() == TAG_UVW) { println("Object already has UVWTag"); return; } checktag = checktag->GetNext(); } var st_time = GeGetSysTime(); println("Time: ", st_time->hour, ":", st_time->minute, ":", st_time->second); var t_tag = new(UVWTag); var random = new(Random); random->Init(198376); var a_uvwcoords = new(array, 6*4); var counter; var v_coord = vector(0); for(counter = 0; counter < 6*4; counter++) { v_coord.x = random->Get01(); v_coord.y = random->Get01(); a_uvwcoords[counter] = v_coord; println("Poly: ", counter/4, " Point: ", counter%4, " ", v_coord); } var vc = new(VariableChanged); vc->Init(0,op->GetPolygonCount()); if (!t_tag->Message(MSG_POLYGONS_CHANGED,vc)) return; if(!t_tag->SetData(a_uvwcoords)) { println("SetData Failed!"); return; } t_tag->Message(MSG_UPDATE); if(!op->InsertTag(t_tag, NULL)) { println("InsertTag Failed!"); return; } op->Message(MSG_UPDATE); }
Voila! And there it is.
Regards / Feccand -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 01/06/2003 at 15:26, xxxxxxxx wrote:
Oh. Forgot to mention that the example assumes that the tag is on a cube that is made editable and has no UVWTag.
Regards / Feccand -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 02/06/2003 at 01:26, xxxxxxxx wrote:
Sorry, I forgot about that workaround.
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 02/06/2003 at 05:46, xxxxxxxx wrote:
Hey. No problem.
I'm just glad it works..
Regards / Feccand