EpicGamesExt / BlenderTools

Blender addons that improve the game development workflow between Blender and Unreal.
https://epicgamesext.github.io/BlenderTools/
MIT License
2.76k stars 49 forks source link

Send to Unreal 2.3.0 and previous - Timeout is ignored #563

Closed Hunanbean closed 1 year ago

Hunanbean commented 1 year ago

Send to Unreal is ignoring the set timeout in the add-on settings.

I am sending a Morph Target heavy Skeletal Mesh, and a LOD1 of it. It times out, which allows the LOD0 to go through, but not the LOD1. If i strip the morph targets to speed the process up, it import correctly with the second model as LOD1

Does not matter how high i set the Timeout in the settings, it just seems to ignore it

Thank you

james-baber commented 1 year ago

can you paste this into the unreal python console after adjusting the rpc time out value in blender?

import os
print(os.environ['RPC_TIME_OUT'])

Add see if they match?

Hunanbean commented 1 year ago

blender_6yV601dqsV There, in the plugins settings, is where i adjust the timeout and this

 import os
 print(os.environ['RPC_TIME_OUT'])
6000

is the result this time, but not always. Yesterday it just gave an error as though it did not know what that setting was.

also, with 2.3.0 the first time i attempt to Send, it does nothing, but the console then reads

  File "C:\Program Files\Blender Foundation\Blender 3.3\3.3\python\lib\xmlrpc\client.py", line 1321, in send_content
    connection.endheaders(request_body)
  File "C:\Program Files\Blender Foundation\Blender 3.3\3.3\python\lib\http\client.py", line 1277, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "C:\Program Files\Blender Foundation\Blender 3.3\3.3\python\lib\http\client.py", line 1037, in _send_output
    self.send(msg)
  File "C:\Program Files\Blender Foundation\Blender 3.3\3.3\python\lib\http\client.py", line 975, in send
    self.connect()
  File "C:\Program Files\Blender Foundation\Blender 3.3\3.3\python\lib\http\client.py", line 941, in connect
    self.sock = self._create_connection(
  File "C:\Program Files\Blender Foundation\Blender 3.3\3.3\python\lib\socket.py", line 845, in create_connection
    raise err
  File "C:\Program Files\Blender Foundation\Blender 3.3\3.3\python\lib\socket.py", line 833, in create_connection
    sock.connect(sa)
ConnectionRefusedError: [WinError 10061] No connection could be made because the target machine actively refused it

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\USERNAME\AppData\Roaming\Blender Foundation\Blender\3.3\scripts\addons\send2ue\core\formatting.py", line 214, in update_unreal_mesh_folder_path
    auto_format_unreal_folder_path('unreal_mesh_folder_path', self)
  File "C:\Users\USERNAME\AppData\Roaming\Blender Foundation\Blender\3.3\scripts\addons\send2ue\core\formatting.py", line 116, in auto_format_unreal_folder_path
    elif not error_message and not UnrealRemoteCalls.directory_exists('/'.join(formatted_value.split('/')[:2])):
  File "C:\Users\USERNAME\AppData\Roaming\Blender Foundation\Blender\3.3\scripts\addons\send2ue\dependencies\rpc\factory.py", line 248, in wrapper
    return rpc_factory.run_function_remotely(function, args)
  File "C:\Users\USERNAME\AppData\Roaming\Blender Foundation\Blender\3.3\scripts\addons\send2ue\dependencies\rpc\factory.py", line 204, in run_function_remotely
    code = self._register(function)
  File "C:\Users\USERNAME\AppData\Roaming\Blender Foundation\Blender\3.3\scripts\addons\send2ue\dependencies\rpc\factory.py", line 189, in _register
    raise ConnectionRefusedError(f'No connection could be made with "{server_name}"')
ConnectionRefusedError: No connection could be made with "9998"
File "C:\Users\USERNAME\AppData\Roaming\Blender Foundation\Blender\3.3\scripts\addons\send2ue\core\formatting.py", line 207, in update_unreal_mesh_folder_path
Hunanbean commented 1 year ago

Even when the setting does hold, as above, it is not real. It still times out and causes LOD1 to not be brought in.

Hunanbean commented 1 year ago

TimeoutError: The call "import_asset" timed out because it hit the timeout limit of 60 seconds.

james-baber commented 1 year ago

Ok ill look into this

james-baber commented 1 year ago

So I am not seeing this on my end.

image image

I just threw this

import time
time.sleep(210)

on inside this line https://github.com/EpicGames/BlenderTools/blob/8e58fff215925710762c279e87702fa82ac2cc04/send2ue/dependencies/unreal.py#L779

To simulate an import that takes 210 seconds to import, and timeout is working as expected in this case.

Hunanbean commented 1 year ago

I guess i will continue to use the previous version and export the LODs separately until others either report the same, or it starts working on my crazy system.

Thank you

yefengjie commented 1 year ago

C:\Users\Administrator\AppData\Roaming\Blender Foundation\Blender\3.4\scripts\addons\send2ue\dependencies\rpc\base_server.py

just edit this file,change timeout timeout = int(os.environ.get('RPC_TIME_OUT', 60)) to -> timeout = int(os.environ.get('RPC_TIME_OUT', 9000000))

yefengjie commented 1 year ago

same issues to me

yefengjie commented 1 year ago

same issues to me

blendar3.4 and ue 5.0

Hunanbean commented 1 year ago

C:\Users\Administrator\AppData\Roaming\Blender Foundation\Blender\3.4\scripts\addons\send2ue\dependencies\rpc\base_server.py


timeout = int(os.environ.get('RPC_TIME_OUT', 60)) 
to -> 
timeout = int(os.environ.get('RPC_TIME_OUT', 9000000))```

This did work for my scenario. Thanks yefengjie

yefengjie commented 1 year ago

C:\Users\Administrator\AppData\Roaming\Blender Foundation\Blender\3.4\scripts\addons\send2ue\dependencies\rpc\base_server.py

timeout = int(os.environ.get('RPC_TIME_OUT', 60)) 
to -> 
timeout = int(os.environ.get('RPC_TIME_OUT', 9000000))```

This did work for my scenario. Thanks yefengjie

but it do not work for me !!!

Hunanbean commented 1 year ago

but it do not work for me !!!

Sorry, i do not know why. Also, I have my Unreal "Multicast Time-To-Live" set to 0