Locomotion Issue

Double-check that the binary is executable, you should be able to launch the loco3d binary without error.

cd ~/maya/modules/Locomotion-2024_11_14/shared/unix
./loco3d

It won’t say much, but it won’t produce an error. If it does, please paste the error here.

Was this issue resolved because I’m having the same error.
The latest ragdoll and locomotion have been installed ,loco3d can be found.
On Linux.
locomotion.so 2024.11.14
ragdoll 2024.07.01

Yes, his was resolved.

Can you try running the below and tell me whether and what it says?

cd ~/maya/modules/Locomotion-2024_11_14/shared/unix
./loco3d

We have a different path but when I run loco3d it says
Ragdoll: Trial expired
Even tho we have 3 current unlimited lics that show up correctly in Ragdoll

Great, that’s a clue. Then the problem is different from the one above, even though the outcome appears to be the same. Do you have a node-locked or floating licence?

Can you try:

  1. Launch Maya
  2. Simulate anything with Ragdoll, simulation will ensure a licence is allocated to your machine
  3. Then make something with Locomotion

It’s possible it needs Ragdoll to activate the licence before use, which would be a bug and a clue.

We have floating lics.
Yeah Ragdoll works fine and simulates.
Run something simple in Locomotion (cube and 2 spheres below it )
// Warning: Locomotion failed with ‘Solved To Acceptable Level’

Hm. Are you able to spot any messages in the console/terminal for Maya? It might say “Trial expired” there as well.

Did a search in the terminal .Nothing .

Sorry about that, we’ll investigate this on our end. If you stumble upon any more clues or messages, let me know and we’ll try and get to the bottom of this asap.

Any news yet.
Is the fact that when you run loco3d and it gives a message
Ragdoll: Trial expired
mean it can’t find the licence.

I’ve had a look at this now, and I’m struggling to reproduce it.

Can you confirm that in the Maya session where this fails, you have an active licence?

And that a scene like this does not work for you?

Hi
Yeah I can confirm that Radoll has a full unlimited lic and when I either make a simple scene of a cube and spheres or load the scene that was mentioned earlier in the thread I get the error in locomotion.

Hi @craigb, we’re investigating this, but we need more information.

Would you be able to set this environment variable?

import os
os.environ["LOCOMOTION_DEVELOPER" ] = "1"

It would need to happen prior to loading the Locomotion plug-in. Could be from the terminal, before launching Maya. Or inside of Maya, using that above Python script, before loading the plug-in.

Once you attempt to simulate, you should find more messages in the terminal window (not the Maya Script Editor).

Hi Alan
I tried setting the enviro Var both in Maya and from a terminal but there were no messages in the terminal window.
I have a new problem now with export physics, once I save a scene and reload it back into Maya I can’t export physics.
While I’m applying ragdoll to a rig I’m able to export but if I save the scene and reload it and try to export,0 markers are saved.

cheers Craig

Sometimes these can be hard to spot. Would it be possible to paste the entirety of what comes out of the terminal when you load the locmotion plug-in?

To keep this thread on-track, do open a new thread about this.

Hi Alan
it took a couple of goes but this is the only message I got.

QPixmap::scaleWidth: Pixmap is a null pixmap

QPixmap::scaleWidth: Pixmap is a null pixmap

loco3d: Sanity checking…

Converting JSON → Plan

loco3d: Convert Plan → Animation

Hm, those look like messages from when you have already loaded the plug-in, and are running a simulation. What I’m looking for is the terminal messages before and during the loading of the locomotion.so plug-in, from the Maya Plug-in Manager. Or, loading ragdoll.so which will load the locomotion.so for you.

Sorry to be a pain, I know it’s tedious. We haven’t encountered this before, and can’t reproduce it on our side, so your efforts are much appreciated!

@alanjfs @craigb @marcus

Hey guys, I work with Craig. I set the env variable in the terminal prior to loading maya, and then again in maya with the snippet you provided. It does not seem to print anything additional than the initial “Failed to solve…” error.

The plugin locomotion plugin loads fine within maya without error. We have 3 floating lics and its pretty easy to tell when we do or do not have one available. I can confirm the path to loco3d is on the PATH within maya and it has been set to executable.

If you try to access the executable on its own, just to see if its working, it does nothing.

We are on
rocky9
Maya 2023
Ragdoll/2024.07.01
locmotion/2024.11.14

We are installing maya 2024/5 for a separate task, but I do not think that will help, since the executable is shared across all versions.

I have tried the simplified steps Marcus has posted and still it will just error.

We have a pretty complex environment, legacy env manager and the like. Perhaps telling me more about how locomotion and ragdoll/maya communicate may help debug this?

from locomotion import constants
constants.LOCOMOTION_DEVELOPER
# Result: True #

Also to add,

I started our maya in a vanilla environment, only the adsk licencing and the locomation plugin with the ragdoll license server set. It still fails with the same error.

And I am doing a polyCube for the body and a sphere for the single leg.

The lines that project out forward are perfectly straight.

Hey @rav, been a while. :slight_smile: Hope all is well.

What a tricky one this turned out to be!

I’ve put together a reproducible that I’d like for you to try.

import os
import subprocess

loco3d = os.environ["LOCOMOTION_EXECUTABLE"]

popen = subprocess.Popen(
    loco3d,
    stdin=subprocess.PIPE,
    stdout=subprocess.PIPE,
    stderr=subprocess.PIPE
)

text = b"locomotion data\n"
size = b"%08x" % len(text)
t = popen.stdin.write(size)
t = popen.stdin.write(text)
popen.stdin.flush()

out = popen.stdout.readlines()
err = popen.stderr.readlines()

print("\n".join(str(l) for l in out + err))

assert out == []

expected_output = [b'!Reading !16! bytes from parent process..\r\n', b'Sanity checking..\r\n', b'Converting JSON -> Plan\r\n', b'Convert Plan -> Animation\r\n']
assert err == expected_output

This will launch the loco3d executable like normal use would, except without the Maya plug-in. It should also automatically exit that process, but in case it does not you can call this.

# In case the process/window does not close
popen.kill()

It should not throw any assertion errors, you can see I’ve put some in here.

Let me know what you see!

@marcus Hey! Been a while, yes. I hope you are doing well. Congrats on Ragdoll + blender.

I ran the code in Maya, locomotion was loaded.

import os
import subprocess

loco3d = os.environ["LOCOMOTION_EXECUTABLE"]

popen = subprocess.Popen(
    loco3d,
    stdin=subprocess.PIPE,
    stdout=subprocess.PIPE,
    stderr=subprocess.PIPE
)
text = b"locomotion data\n"
size = b"%08x" % len(text)
t = popen.stdin.write(size)
t = popen.stdin.write(text)
popen.stdin.flush()

out = popen.stdout.readlines()
err = popen.stderr.readlines()

print("\n".join(str(l) for l in out + err))

assert out == []

expected_output = [b'!Reading !16! bytes from parent process..\r\n', b'Sanity checking..\r\n', b'Converting JSON -> Plan\r\n', b'Convert Plan -> Animation\r\n']
assert err == expected_output


# Error: 
# Traceback (most recent call last):
#   File "<maya console>", line 26, in <module>
# AssertionError #
loco3d = os.environ["LOCOMOTION_EXECUTABLE"]
print(loco3d)
# ... for security
/.../.../.../.../Ragdoll/2024.07.01-build1/arch/linux-any/x86_64/Locomotion-2024_11_14/shared/unix/loco3d

I am trying with the latest download for locomotion, but it was also not working on the previously installed one. That was due to us not being familiar with it needing to be an executable.

Does locomotion have a different env variable it looks for licensing?

Thanks for the help!