General GATech Questions

From Moviesandbox

Revision as of 22:45, 8 November 2007 by 90.152.8.69 (Talk)
Jump to: navigation, search

letori We are trying to create two Gatech puppets with the same input device, but when we are trying to assign a value for controler as 1 for both the puppets, it recognises input from only one of them, Is it feasible to have two puppets running simultaneously from the same input device?

It's not supported right now. What you probably want to do is implement that functionality into your processing code, so that you can send the same data to multiple ports. Does that make sense? --fiezi 00:16, 17 October 2007 (MEST)


Thanks, we have another problem, we are trying to compile "gatechpuppet" after making some changes, through "ucc make" but we getting an error saying --- " supeclass MSBPawn of class GATechCactus not found" its somehow not able to detect MSBPawn class and hence does not create a .U file, we are not able to understand the reason.

The reason is that Moviesandbox uses the -mod structure of Unreal Tournament and thus the compiler needs to know about this. It is quite simple to set this up in UDE and i would generally suggest using UDE for Code changes and not ucc. See here for information on how the mod structure works. And in order to compile (quick solution), do this:

/ running the UnrealScript compiler
ucc.exe make -mod=Moviesandbox

Hope this helps. --fiezi 10:54, 25 October 2007 (MEST)

Well we figured that one out. The stuff is compiled and runnig the only problem is that the control input class is accepting input only from one arm. We added the respective AnimBlenparams and bonerotation functions which are compiling but they dont reflect when we spawn the puppet.

So you're sending data packets to the udp class and you can read the data input? Can you log what you're receiving? The UDP input class is not limited to the number of data it can receive. So theoretically you can send all your data to the same port. Is that possible with your side of the implementation?

Hi, Yeah Actually we are sending all the data to the same port, but we are having difficulty in identifying the bones in unreal script. like when we try to use more than one bones then it seems like only one of them actually works

The Unreal bones are a bit nasty. What name convention are you using for the bones? Do you have special characters in them? Like spaces or points or something? What function are you using to modify the bones? --fiezi 23:58, 25 October 2007 (MEST)

Hi, Actually we did not name it in any conventional way, just had JOINT1, JOINT2 and so on... and there arent any special characters. And we used the following fucntions for reading bones


"myPawn.SetBoneRotation(PuppetHead, headRot,, 1.0);" "binary=udpLink.byteData[0];"

"torsoPitch = udpLink.byteData[3+binary+0]; torsoPitch = (torsoPitch-128)/128; torsoYaw = udpLink.byteData[3+binary+1]; torsoYaw = (torsoYaw-128)/128;"

"torsoRot.Pitch = torsoPitch*12600; torsoRot.Yaw = torsoYaw*12600;"

for default properties and assigning bones... "PuppetHead=joint15 PuppetTorso=joint6"


We just tried to reuse the code which has already been built for gatech cactus here.

Is there anyway that we can log the data and see the parameters that are getting into udpLink.byteData[3+binary+0], so that we can map exactly whats happening with the bones? also if there is any better way to implement rather that using "set bone rotation" would also be helpful

Awaiting for your reply..


Hey there, Unreal bone rotation, as i already mentioned i think, is a beast, especially if you want to rotate around two axis. You are using the right function with SetBoneRotation, but in your code above, you should be careful with things like /128 because Unreal does weird things with int values. For example: (200-128)/128 equals 72/128 equals 0, as unreal does not do any form of conversion if the end variable is an integer (and Rotations are integer values)! With the code above, the only values you can get for torsoYaw is 0!

To fix this, try doing the following: torsoYaw = float((torsoYaw-128)* 12600/128);

As for the rotation, the bone rotation does not work in the traditional way, but always rotates around the bone axes, which makes it pretty hard to determine what values you need to put into the rotator for the bonerotation. Also, be aware that each bone has its own coordinate system! You can also try going with locations and use SetBoneLocation, but i don't know how that will treat your vertex weighting...

Personal tools
Moviesandbox for UT2004