diff --git a/direct/src/cluster/ClusterClient.py b/direct/src/cluster/ClusterClient.py index 914e080e7e..4bf096c98b 100644 --- a/direct/src/cluster/ClusterClient.py +++ b/direct/src/cluster/ClusterClient.py @@ -17,32 +17,32 @@ class ClusterClient(DirectObject.DirectObject): self.__name__ = 'cluster' # First start up servers using direct daemon # What is the name of the client machine? - clusterDaemonClient = base.config.GetString( - 'cluster-daemon-client', 'None') - if clusterDaemonClient == 'None': - clusterDaemonClient = os.popen('uname -n').read() - clusterDaemonClient = clusterDaemonClient.replace('\n', '') + clusterClientDaemonHost = base.config.GetString( + 'cluster-client-daemon', 'None') + if clusterClientDaemonHost == 'None': + clusterClientDaemonHost = os.popen('uname -n').read() + clusterClientDaemonHost = clusterClientDaemonHost.replace('\n', '') # What daemon port are we using to communicate between client/servers - clusterDaemonPort = base.config.GetInt( - 'cluster-daemon-port', CLUSTER_DAEMON_PORT) + clusterClientDaemonPort = base.config.GetInt( + 'cluster-client-daemon-port', CLUSTER_DAEMON_PORT) # Create a daemon self.daemon = DirectD() # Start listening for the response - self.daemon.listenTo(clusterDaemonPort) + self.daemon.listenTo(clusterClientDaemonPort) # Contact server daemons and start up remote server application for serverConfig in configList: # First kill existing application self.daemon.tellServer(serverConfig.serverName, - clusterDaemonPort, + serverConfig.serverDaemonPort, 'ka') # Now start up new application serverCommand = (SERVER_STARTUP_STRING % - (serverConfig.serverPort, + (serverConfig.serverMsgPort, clusterSyncFlag, - clusterDaemonClient, - clusterDaemonPort)) + clusterClientDaemonHost, + clusterClientDaemonPort)) self.daemon.tellServer(serverConfig.serverName, - clusterDaemonPort, + serverConfig.serverDaemonPort, serverCommand) print 'Begin waitForServers' if not self.daemon.waitForServers(len(configList)): @@ -52,13 +52,14 @@ class ClusterClient(DirectObject.DirectObject): self.serverList = [] self.msgHandler = ClusterMsgHandler(ClusterClient.MGR_NUM, self.notify) for serverConfig in configList: - server = DisplayConnection(self.qcm, serverConfig.serverName, - serverConfig.serverPort, self.msgHandler) + server = DisplayConnection( + self.qcm, serverConfig.serverName, + serverConfig.serverMsgPort, self.msgHandler) if server == None: self.notify.error('Could not open %s on %s port %d' % (serverConfig.serverConfigName, serverConfig.serverName, - serverConfig.serverPort)) + serverConfig.serverMsgPort)) else: self.notify.debug('send cam pos') #server.sendMoveCam(Point3(0), Vec3(0)) @@ -300,10 +301,12 @@ class DisplayConnection: self.cw.send(datagram, self.tcpConn) class ClusterConfigItem: - def __init__(self, serverConfigName, serverName, serverPort): + def __init__(self, serverConfigName, serverName, + serverDaemonPort, serverMsgPort): self.serverConfigName = serverConfigName self.serverName = serverName - self.serverPort = serverPort + self.serverDaemonPort = serverDaemonPort + self.serverMsgPort = serverMsgPort # Camera Offset self.xyz = Vec3(0) self.hpr = Vec3(0) @@ -347,9 +350,10 @@ def createClusterClient(): fs = configData.get('film size', None) fo = configData.get('film offset', None) if displayMode == 'client': + #lens.setInterocularDistance(pos[0]) + base.cam.setPos(pos) lens = base.cam.node().getLens() lens.setViewHpr(hpr) - lens.setIodOffset(pos[0]) if fl is not None: lens.setFocalLength(fl) if fs is not None: @@ -365,14 +369,22 @@ def createClusterClient(): (serverConfigName, clusterConfig)) base.notify.warning('%s will not be used.' % serverConfigName) else: - # Server port - serverPortConfigName = 'cluster-server-port-%s' % displayName - serverPort = base.config.GetInt(serverPortConfigName, - CLUSTER_SERVER_PORT) + # Daemon port + serverDaemonPortConfigName = ( + 'cluster-server-daemon-port-%s' % displayName) + serverDaemonPort = base.config.GetInt( + serverDaemonPortConfigName, + CLUSTER_DAEMON_PORT) + # TCP Server port + serverMsgPortConfigName = ( + 'cluster-server-msg-port-%s' % displayName) + serverMsgPort = base.config.GetInt(serverMsgPortConfigName, + CLUSTER_SERVER_PORT) cci = ClusterConfigItem( serverConfigName, serverName, - serverPort) + serverDaemonPort, + serverMsgPort) # Init cam offset cci.setCamOffset(pos, hpr) # Init frustum if specified diff --git a/direct/src/cluster/ClusterConfig.py b/direct/src/cluster/ClusterConfig.py index 260d8f40c6..74313afc41 100644 --- a/direct/src/cluster/ClusterConfig.py +++ b/direct/src/cluster/ClusterConfig.py @@ -28,12 +28,23 @@ ClientConfigs = { 'two-server': [{'display name': 'master', 'display mode': 'client', 'pos': Vec3(0), - #'hpr': Vec3(30, 0, 0)}, - 'hpr': Vec3(0, 0, 0)}, + 'hpr': Vec3(0)}, {'display name': 'la', 'pos': Vec3(0), - #'hpr': Vec3(-30, 0, 0) - 'hpr': Vec3(0, 0, 0) + 'hpr': Vec3(0) + } + ], + 'three-server': [{'display name': 'master', + 'display mode': 'client', + 'pos': Vec3(0), + 'hpr': Vec3(0)}, + {'display name': 'la', + 'pos': Vec3(0), + 'hpr': Vec3(0) + }, + {'display name': 'lb', + 'pos': Vec3(0), + 'hpr': Vec3(0) } ], 'mono-cave': [{'display name': 'la', @@ -110,320 +121,6 @@ ClientConfigs = { 'film offset': (-0.000, 0.173), }, ], - 'nemo-cave': [{'display name': 'master', - 'display mode': 'client', - 'pos': Vec3(-0.105, -0.020, 5.000), - 'hpr': Vec3(-0.370, 0.000, 0.000), - 'focal length': 0.815, - 'film size': (1.000, 0.831), - 'film offset': (0.000, 0.173), - }, - {'display name': 'la', - 'pos': Vec3(-0.105, -0.020, 5.000), - 'hpr': Vec3(51.213, 0.000, 0.000), - 'focal length': 0.809, - 'film size': (1.000, 0.831), - 'film offset': (0.000, 0.173), - }, - {'display name': 'lb', - 'pos': Vec3(-0.105, -0.020, 5.000), - 'hpr': Vec3(-0.370, 0.000, 0.000), - 'focal length': 0.815, - 'film size': (1.000, 0.831), - 'film offset': (0.000, 0.173), - }, - {'display name': 'lc', - 'pos': Vec3(-0.105, -0.020, 5.000), - 'hpr': Vec3(-51.675, 0.000, 0.000), - 'focal length': 0.820, - 'film size': (1.000, 0.830), - 'film offset': (-0.000, 0.173), - }, - {'display name': 'ra', - 'pos': Vec3(0.105, -0.020, 5.000), - 'hpr': Vec3(51.675, 0.000, 0.000), - 'focal length': 0.820, - 'film size': (1.000, 0.830), - 'film offset': (0.000, 0.173), - }, - {'display name': 'rb', - 'pos': Vec3(0.105, -0.020, 5.000), - 'hpr': Vec3(0.370, 0.000, 0.000), - 'focal length': 0.815, - 'film size': (1.000, 0.831), - 'film offset': (0.000, 0.173), - }, - {'display name': 'rc', - 'pos': Vec3(0.105, -0.020, 5.000), - 'hpr': Vec3(-51.213, 0.000, 0.000), - 'focal length': 0.809, - 'film size': (1.000, 0.831), - 'film offset': (-0.000, 0.173), - }, - {'display name': 'lAudienceL', - 'pos': Vec3(-4.895, -0.020, 5.000), - 'hpr': Vec3(51.213, 0.000, 0.000), - 'focal length': 0.809, - 'film size': (1.000, 0.831), - 'film offset': (0.000, 0.173), - }, - {'display name': 'rAudienceL', - 'pos': Vec3(-5.105, -8.0, 5.000), - 'hpr': Vec3(51.675, 0.000, 0.000), - 'focal length': 0.820, - 'film size': (1.000, 0.830), - 'film offset': (0.000, 0.173), - }, - {'display name': 'lAudienceR', - 'pos': Vec3(5.105, -0.020, 5.000), - 'hpr': Vec3(-51.213, 0.000, 0.000), - 'focal length': 0.809, - 'film size': (1.000, 0.831), - 'film offset': (0.000, 0.173), - }, - {'display name': 'rAudienceR', - 'pos': Vec3(4.895, -8.0, 5.000), - 'hpr': Vec3(-51.675, 0.000, 0.000), - 'focal length': 0.820, - 'film size': (1.000, 0.830), - 'film offset': (0.000, 0.173), - }, - ], - 'nemo-cave-narrow': [{'display name': 'master', - 'display mode': 'client', - 'pos': Vec3(-0.105, -0.020, 5.000), - 'hpr': Vec3(-0.370, 0.000, 0.000), - 'focal length': 0.815, - 'film size': (1.000, 0.831), - 'film offset': (0.000, 0.173), - }, - {'display name': 'la', - 'pos': Vec3(-0.105, -19.890, 4.500), - 'hpr': Vec3(51.500, 0.000, 0.000), - 'focal length': 1.662, - 'film size': (1.000, 0.828), - 'film offset': (1.079, 0.207), - }, - {'display name': 'lb', - 'pos': Vec3(-0.105, -19.890, 4.500), - 'hpr': Vec3(0.000, 0.000, 0.000), - 'focal length': 2.186, - 'film size': (1.000, 0.828), - 'film offset': (0.007, 0.207), - }, - {'display name': 'lc', - 'pos': Vec3(-0.105, -19.890, 4.500), - 'hpr': Vec3(-51.500, 0.000, 0.000), - 'focal length': 1.673, - 'film size': (1.000, 0.828), - 'film offset': (-1.070, 0.207), - }, - {'display name': 'ra', - 'pos': Vec3(0.105, -19.890, 4.500), - 'hpr': Vec3(51.500, 0.000, 0.000), - 'focal length': 1.673, - 'film size': (1.000, 0.828), - 'film offset': (1.070, 0.207), - }, - {'display name': 'rb', - 'pos': Vec3(0.105, -19.890, 4.500), - 'hpr': Vec3(0.000, 0.000, 0.000), - 'focal length': 2.186, - 'film size': (1.000, 0.828), - 'film offset': (-0.007, 0.207), - }, - {'display name': 'rc', - 'pos': Vec3(0.105, -19.890, 4.500), - 'hpr': Vec3(-51.500, 0.000, 0.000), - 'focal length': 1.662, - 'film size': (1.000, 0.828), - 'film offset': (-1.079, 0.207), - }, - {'display name': 'lAudienceL', - 'pos': Vec3(-0.105, -19.890, 4.500), - 'hpr': Vec3(49.038, 0.000, 0.000), - 'focal length': 1.452, - 'film size': (1.000, 0.797), - 'film offset': (-0.292, 0.149), - }, - {'display name': 'rAudienceL', - 'pos': Vec3(0.105, -19.890, 4.500), - 'hpr': Vec3(49.038, 0.000, 0.000), - 'focal length': 1.468, - 'film size': (1.000, 0.797), - 'film offset': (-0.306, 0.149), - }, - {'display name': 'lAudienceR', - 'pos': Vec3(-0.105, -19.890, 4.500), - 'hpr': Vec3(-52.750, 0.000, 0.000), - 'focal length': 1.551, - 'film size': (1.000, 0.796), - 'film offset': (0.245, 0.149), - }, - {'display name': 'rAudienceR', - 'pos': Vec3(0.105, -19.890, 4.500), - 'hpr': Vec3(-52.750, 0.000, 0.000), - 'focal length': 1.534, - 'film size': (1.000, 0.796), - 'film offset': (0.232, 0.149), - }, - {'display name': 'lCart', - 'pos': Vec3(-0.105, -0.020, 5.000), - 'hpr': Vec3(-0.370, 0.000, 0.000), - 'focal length': 0.815, - 'film size': (1.000, 0.831), - 'film offset': (0.000, 0.173), - }, - {'display name': 'rCart', - 'pos': Vec3(0.105, -0.020, 5.000), - 'hpr': Vec3(0.370, 0.000, 0.000), - 'focal length': 0.815, - 'film size': (1.000, 0.831), - 'film offset': (0.000, 0.173), - }, - ], - 'fourd-cave': [{'display name': 'master', - 'display mode': 'client', - 'pos': Vec3(-0.105, -0.020, 5.000), - 'hpr': Vec3(-0.370, 0.000, 0.000), - 'focal length': 0.815, - 'film size': (1.000, 0.831), - 'film offset': (0.000, 0.173), - }, - {'display name': 'la', - 'pos': Vec3(-0.105, -0.020, 5.000), - 'hpr': Vec3(51.213, 0.000, 0.000), - 'focal length': 0.809, - 'film size': (1.000, 0.831), - 'film offset': (0.000, 0.173), - }, - {'display name': 'lb', - 'pos': Vec3(-0.105, -0.020, 5.000), - 'hpr': Vec3(-0.370, 0.000, 0.000), - 'focal length': 0.815, - 'film size': (1.000, 0.831), - 'film offset': (0.000, 0.173), - }, - {'display name': 'lc', - 'pos': Vec3(-0.105, -0.020, 5.000), - 'hpr': Vec3(-51.675, 0.000, 0.000), - 'focal length': 0.820, - 'film size': (1.000, 0.830), - 'film offset': (-0.000, 0.173), - }, - {'display name': 'ra', - 'pos': Vec3(0.105, -0.020, 5.000), - 'hpr': Vec3(51.675, 0.000, 0.000), - 'focal length': 0.820, - 'film size': (1.000, 0.830), - 'film offset': (0.000, 0.173), - }, - {'display name': 'rb', - 'pos': Vec3(0.105, -0.020, 5.000), - 'hpr': Vec3(0.370, 0.000, 0.000), - 'focal length': 0.815, - 'film size': (1.000, 0.831), - 'film offset': (0.000, 0.173), - }, - {'display name': 'rc', - 'pos': Vec3(0.105, -0.020, 5.000), - 'hpr': Vec3(-51.213, 0.000, 0.000), - 'focal length': 0.809, - 'film size': (1.000, 0.831), - 'film offset': (-0.000, 0.173), - }, - {'display name': 'lAudienceL', - 'pos': Vec3(-4.895, -0.020, 5.000), - 'hpr': Vec3(65.213, 0.000, 0.000), - 'focal length': 0.809, - 'film size': (1.000, 0.831), - 'film offset': (0.000, 0.173), - }, - {'display name': 'rAudienceL', - 'pos': Vec3(-5.105, -8.0, 5.000), - 'hpr': Vec3(65.675, 0.000, 0.000), - 'focal length': 0.820, - 'film size': (1.000, 0.830), - 'film offset': (0.000, 0.173), - }, - {'display name': 'lAudienceR', - 'pos': Vec3(5.105, -0.020, 5.000), - 'hpr': Vec3(-65.213, 0.000, 0.000), - 'focal length': 0.809, - 'film size': (1.000, 0.831), - 'film offset': (0.000, 0.173), - }, - {'display name': 'rAudienceR', - 'pos': Vec3(4.895, -8.0, 5.000), - 'hpr': Vec3(-65.675, 0.000, 0.000), - 'focal length': 0.820, - 'film size': (1.000, 0.830), - 'film offset': (0.000, 0.173), - }, - ], - 'parallax-cave': [{'display name': 'master', - 'display mode': 'client', - 'pos': Vec3(0), - 'hpr': Vec3(0), - 'focal length': 0.815, - 'film size': (1.000, 0.831), - 'film offset': (0.000, 0.173), - }, - {'display name': 'la', - 'pos': Vec3(0), - 'hpr': Vec3(0), - 'focal length': 0.809, - 'film size': (1.000, 0.831), - 'film offset': (0.000, 0.173), - }, - {'display name': 'lb', - 'pos': Vec3(0), - 'hpr': Vec3(0), - 'focal length': 0.815, - 'film size': (1.000, 0.831), - 'film offset': (0.000, 0.173), - }, - {'display name': 'lc', - 'pos': Vec3(0), - 'hpr': Vec3(0), - 'focal length': 0.820, - 'film size': (1.000, 0.830), - 'film offset': (-0.000, 0.173), - }, - {'display name': 'ra', - 'pos': Vec3(0), - 'hpr': Vec3(0), - 'focal length': 0.820, - 'film size': (1.000, 0.830), - 'film offset': (0.000, 0.173), - }, - {'display name': 'rb', - 'pos': Vec3(0), - 'hpr': Vec3(0), - 'focal length': 0.815, - 'film size': (1.000, 0.831), - 'film offset': (0.000, 0.173), - }, - {'display name': 'rc', - 'pos': Vec3(0), - 'hpr': Vec3(0), - 'focal length': 0.809, - 'film size': (1.000, 0.831), - 'film offset': (-0.000, 0.173), - }, - ], - 'carttest': [{'display name': 'master', - 'display mode': 'client', - 'pos': Vec3(0), - 'hpr': Vec3(0), - }, - {'display name': 'left', - 'pos': Vec3(-.105, 0, 0), - 'hpr': Vec3(0, 0, 0)}, - {'display name': 'right', - 'pos': Vec3(.105, 0, 0), - 'hpr': Vec3(0, 0, 0)} - ], 'ursula': [{'display name': 'master', 'display mode': 'client', 'pos': Vec3(0), diff --git a/direct/src/cluster/ClusterMsgs.py b/direct/src/cluster/ClusterMsgs.py index 2c757e9e1e..69d4d1fdfb 100644 --- a/direct/src/cluster/ClusterMsgs.py +++ b/direct/src/cluster/ClusterMsgs.py @@ -21,8 +21,12 @@ CLUSTER_TIME_DATA = 8 CLUSTER_EXIT = 100 #Port number for cluster rendering -CLUSTER_SERVER_PORT = 1970 +# DAEMON PORT IS PORT USED FOR STARTUP MESSAGE EXCHANGE +# CAN BE OVERRIDEN WITH cluster-daemon-client-port for client +# and cluster-daemon-server-port for server CLUSTER_DAEMON_PORT = 8001 +# THIS IS THE TCP PORT USED FOR EXCHANGE OF DATA ONCE STARTUP IS COMPLETE +CLUSTER_SERVER_PORT = 1970 # Precede command string with ! to tell server to execute command string # NOTE: Had to stick with the import __builtin__ scheme, at startup, diff --git a/direct/src/cluster/ClusterServer.py b/direct/src/cluster/ClusterServer.py index 58ba19d2e6..1128383d36 100644 --- a/direct/src/cluster/ClusterServer.py +++ b/direct/src/cluster/ClusterServer.py @@ -179,7 +179,7 @@ class ClusterServer(DirectObject.DirectObject): def handleCamOffset(self, dgi): """ Set offset of camera from cameraJig """ (x, y, z, h, p, r) = self.msgHandler.parseCamOffsetDatagram(dgi) - self.lens.setIodOffset(x) + self.camera.setPos(x,y,z) self.lens.setViewHpr(h, p, r) def handleCamFrustum(self, dgi):