Spaces:
Running
on
Zero
Running
on
Zero
# | |
# Copyright (C) 2023, Inria | |
# GRAPHDECO research group, https://team.inria.fr/graphdeco | |
# All rights reserved. | |
# | |
# This software is free for non-commercial, research and evaluation use | |
# under the terms of the LICENSE.md file. | |
# | |
# For inquiries contact george.drettakis@inria.fr | |
# | |
import torch | |
import traceback | |
import socket | |
import json | |
from scene.cameras import MiniCam | |
host = "127.0.0.1" | |
port = 6009 | |
conn = None | |
addr = None | |
listener = socket.socket(socket.AF_INET, socket.SOCK_STREAM) | |
def init(wish_host, wish_port): | |
global host, port, listener | |
host = wish_host | |
port = wish_port | |
listener.bind((host, port)) | |
listener.listen() | |
listener.settimeout(0) | |
def try_connect(): | |
global conn, addr, listener | |
try: | |
conn, addr = listener.accept() | |
print(f"\nConnected by {addr}") | |
conn.settimeout(None) | |
except Exception as inst: | |
pass | |
def read(): | |
global conn | |
messageLength = conn.recv(4) | |
messageLength = int.from_bytes(messageLength, 'little') | |
message = conn.recv(messageLength) | |
return json.loads(message.decode("utf-8")) | |
def send(message_bytes, verify): | |
global conn | |
if message_bytes != None: | |
conn.sendall(message_bytes) | |
conn.sendall(len(verify).to_bytes(4, 'little')) | |
conn.sendall(bytes(verify, 'ascii')) | |
def receive(): | |
message = read() | |
width = message["resolution_x"] | |
height = message["resolution_y"] | |
if width != 0 and height != 0: | |
try: | |
do_training = bool(message["train"]) | |
fovy = message["fov_y"] | |
fovx = message["fov_x"] | |
znear = message["z_near"] | |
zfar = message["z_far"] | |
do_shs_python = bool(message["shs_python"]) | |
do_rot_scale_python = bool(message["rot_scale_python"]) | |
keep_alive = bool(message["keep_alive"]) | |
scaling_modifier = message["scaling_modifier"] | |
world_view_transform = torch.reshape(torch.tensor(message["view_matrix"]), (4, 4)).cuda() | |
world_view_transform[:,1] = -world_view_transform[:,1] | |
world_view_transform[:,2] = -world_view_transform[:,2] | |
full_proj_transform = torch.reshape(torch.tensor(message["view_projection_matrix"]), (4, 4)).cuda() | |
full_proj_transform[:,1] = -full_proj_transform[:,1] | |
custom_cam = MiniCam(width, height, fovy, fovx, znear, zfar, world_view_transform, full_proj_transform) | |
except Exception as e: | |
print("") | |
traceback.print_exc() | |
raise e | |
return custom_cam, do_training, do_shs_python, do_rot_scale_python, keep_alive, scaling_modifier | |
else: | |
return None, None, None, None, None, None |