2023-07-05 10:22:16 +00:00
|
|
|
#
|
|
|
|
# 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
|
|
|
|
#
|
|
|
|
|
2023-07-04 08:00:48 +00:00
|
|
|
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
|