def buildIntrinsics(self, cameraInit, additionalViews): """ Build up-to-date intrinsics and views based on already loaded + additional images. Does not modify the graph, can be called outside the main thread. Emits intrinsicBuilt(views, intrinsics) when done. """ views = [] intrinsics = [] # Duplicate 'cameraInit' outside the graph. # => allows to compute intrinsics without modifying the node or the graph # If cameraInit is None (i.e: SfM augmentation): # * create an uninitialized node # * wait for the result before actually creating new nodes in the graph (see onIntrinsicsAvailable) inputs = cameraInit.toDict()["inputs"] if cameraInit else {} cameraInitCopy = Node("CameraInit", **inputs) try: self.setBuildingIntrinsics(True) # Retrieve the list of updated viewpoints and intrinsics views, intrinsics = cameraInitCopy.nodeDesc.buildIntrinsics( cameraInitCopy, additionalViews) except Exception: import traceback logging.error("Error while building intrinsics : {}".format( traceback.format_exc())) # Delete the duplicate cameraInitCopy.deleteLater() self.setBuildingIntrinsics(False) # always emit intrinsicsBuilt signal to inform listeners # in other threads that computation is over self.intrinsicsBuilt.emit(cameraInit, views, intrinsics)
def setupTempCameraInit(self, node, attrName): if not node or not attrName: self.tempCameraInit = None return sfmFile = node.attribute(attrName).value if not sfmFile or not os.path.isfile(sfmFile): self.tempCameraInit = None return nodeDesc = meshroom.core.nodesDesc["CameraInit"]() views, intrinsics = nodeDesc.readSfMData(sfmFile) tmpCameraInit = Node("CameraInit", viewpoints=views, intrinsics=intrinsics) self.tempCameraInit = tmpCameraInit
def buildIntrinsics(self, cameraInit, additionalViews, rebuild=False): """ Build up-to-date intrinsics and views based on already loaded + additional images. Does not modify the graph, can be called outside the main thread. Emits intrinsicBuilt(views, intrinsics) when done. Args: cameraInit (Node): CameraInit node to build the intrinsics for additionalViews: list of additional views to add to the CameraInit viewpoints rebuild (bool): whether to rebuild already created intrinsics """ views = [] intrinsics = [] # Duplicate 'cameraInit' outside the graph. # => allows to compute intrinsics without modifying the node or the graph # If cameraInit is None (i.e: SfM augmentation): # * create an uninitialized node # * wait for the result before actually creating new nodes in the graph (see onIntrinsicsAvailable) inputs = cameraInit.toDict()["inputs"] if cameraInit else {} cameraInitCopy = Node("CameraInit", **inputs) if rebuild: # if rebuilding all intrinsics, for each Viewpoint: for vp in cameraInitCopy.viewpoints.value: vp.intrinsicId.resetValue() # reset intrinsic assignation vp.metadata.resetValue( ) # and metadata (to clear any previous 'SensorWidth' entries) # reset existing intrinsics list cameraInitCopy.intrinsics.resetValue() try: self.setBuildingIntrinsics(True) # Retrieve the list of updated viewpoints and intrinsics views, intrinsics = cameraInitCopy.nodeDesc.buildIntrinsics( cameraInitCopy, additionalViews) except Exception: import traceback logging.error("Error while building intrinsics : {}".format( traceback.format_exc())) # Delete the duplicate cameraInitCopy.deleteLater() self.setBuildingIntrinsics(False) # always emit intrinsicsBuilt signal to inform listeners # in other threads that computation is over self.intrinsicsBuilt.emit(cameraInit, views, intrinsics, rebuild)
def addNewNode(self, nodeType, name=None, position=None, **kwargs): """ Create and add a new node to the graph. Args: nodeType (str): the node type name. name (str): if specified, the desired name for this node. If not unique, will be prefixed (_N). position (Position): (optional) the position of the node **kwargs: keyword arguments to initialize node's attributes Returns: The newly created node. """ if name and name in self._nodes.keys(): name = self._createUniqueNodeName(name) n = self.addNode(Node(nodeType, position=position, **kwargs), uniqueName=name) n.updateInternals() return n