From 6d20e1bdf1419f04bc89f25201652e530b917cad Mon Sep 17 00:00:00 2001 From: Josiah Reeves Date: Thu, 27 Jun 2024 15:42:52 -0700 Subject: [PATCH 1/4] moved python scripts to repo fixed edge case where "content" was not found --- EarthMesh/EarthMesh.2.0.hda | Bin 0 -> 48048 bytes EarthMesh_Test.hip | Bin 357396 -> 344889 bytes scripts/main.py | 174 ++++++++++++++++++++++++++++++++++++ scripts/utils.py | 101 +++++++++++++++++++++ 4 files changed, 275 insertions(+) create mode 100644 EarthMesh/EarthMesh.2.0.hda create mode 100644 scripts/main.py create mode 100644 scripts/utils.py diff --git a/EarthMesh/EarthMesh.2.0.hda b/EarthMesh/EarthMesh.2.0.hda new file mode 100644 index 0000000000000000000000000000000000000000..047e56435b569112ad2a2139b501fe806f975902 GIT binary patch literal 48048 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 literal 0 HcmV?d00001 diff --git a/EarthMesh_Test.hip b/EarthMesh_Test.hip index b6a02a1e52da0e1cb10d0b489aa809978004550b..173b15d9184e992f55741558e7be286332ad8b1b 100644 GIT binary patch delta 3936 zcmaJ^d2kcw72nl9*;tm1d*W2x%CgLk60HQ^m7mNSvCaAuVY_!xdtulul{P5gPhOr=3a0{nnDbpKQ51 zBh7o?`+dLn-gmsW`|7BEV4waF7nR3b`8*5HTMjQBO_@|!{Fr$8A3r9}da{V7q0;RT z#41(RxZwAx7ShSB&K|>xo~;JXYA{&}&0HaGHE=9v7SA#Z8J^|EtIQ_Fg?||^w4#d5 z>WzeULETgn8h|C>A4gy@85^5iT^$~qr%Uis88x*{xz#q0&si^cor+}SjI7b=uxUgt zVi!T(AJIG|w+U*_%!!7`;_+Dj9Jxr`8(ABaOa1$1C8>f+g6P+*o0Q**){3U+)r9UK zWUY83I#%SgrNOa8@qm^?sz%`EhD*g zk5KM&*}R2?CK;6ST`fgL4tDn58^I`@jI#NBo~{mu;1YZSMWy|kqO_MVOD49*DfaCi z+t#OD7+~~J)Pf5#KzuefS<|qDqBQ+7pLjghpjq=bimG{W+F#ca&{>!})hOo1WsB{)dcf4*_|NH*>2XQC9QTWWV2eiq z;jM&M143TngMhF||9(KYtG^x)2It%g2uG9t5)gWmgVU2!UYkYBPAHl}CO?xQ+jB%+ z&YTFHd`5B(Kc2Yrtc6E?eufo)oE!aG1Dz$Z^P*|aUomp@0 zt(oKyhj-=&Z#FyOq;A*Pas?n1yo!uvpF~`nUhE5+oz8Md{MxTsl1x z>9SQBQj?X|)9B7WAOWq&r{j_CfNBBSlS3zq-ye%c{(Sn8c<5Ay*groWt$afjCtjJK zfDV1mfcSk&jQH2IIJ7aE{)xn9(lLN^KUdXB-xbhBQImm1L>Agz&+$2sP zsS@N!!vOa`s;BW!B|WNVo)#2hW(ebtgb+)3XCr|5#X>Ut=oiSyoelg|im$=$QuiNU@@>8_YUF{rm<~B-b{@q0Crwlj&AK($Gz2h>i*} zS}iEf4;KmZs;`;ds|kJB1aA_pLE6K^ZH;0_&JtKQ-RHv+C}Z$tM5cG4BDA{l=85Kk z`x`pGMV%y_D1~}@=|o6ojlr4R?rs6KRlv&$ zY!t3{o4v&>VYpubSz!$+mCzB^@LVNSkkl6|p&%?!RRy0B%Xza3dKFd5S^>*u-u{X@ zAh-YRI+(uwQd&LK%uG?-7(#KPF$@JtZGyc-P-mLJry}&lE%2B)A}Fm5_9$j_rVX|$ zs+7G7`jqo$My7QkNBZ0v=u^vUb={=~CLcN!8=dmk(b=U}W4d<4VpcVRW@V8jnU z5av7YfflAXFa;dw2EZ83!EXo1^+uWJp;;kBKRXZYggSa2>J?Qgxd6*&zAkG&2)QnU zAB4Lu`GX;hFAx4d#?!xppDONA%n&S`r4uaZ0hVi%P zP{vyyL$IC8pBNJRd#Ik7vG!6()@Lt;%R1{*a1k;7@>7^Y?&|x0gbu}w7GH*n>3P0= z8CnPs^BK92XlA`Jy0Mgi9z^_@$@4{j<{C99kiQnS3 ztPrA2qwqYT{(Cf}$gR2;vQ%g9LI3Q~#7x1KY~`&SC-wdpIx?l%2KA04so$zjPLh6X zP$wiwWu5A+8uYMReHESRR+pd;pHY)VxXq&`J|NLo9yNKld9Ru*yrNf4Hc0&HmHI!^ C)^gPV delta 6597 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 Kv}bay%Kv{o7r>tY diff --git a/scripts/main.py b/scripts/main.py new file mode 100644 index 0000000..748e19e --- /dev/null +++ b/scripts/main.py @@ -0,0 +1,174 @@ +from typing import Any +import logging +import os +import sys +import hou + +from utils import hash_filename, buildBoundingBoxMatrix, sdfBox, file_from_url, json_from_byte, bytes_from_url, find_key +from utils import CACHE_PATH, GOOGLE_API_KEY + +logger = logging.getLogger(__name__) + +# log to the console +handler = logging.StreamHandler(sys.stdout) +formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') +handler.setFormatter(formatter) +# logger.addHandler(handler) +# logger.setLevel(logging.INFO) + +# Enum status +class Status: + SUCCESS = 0 + ERROR = 1 + INTERRUPTED = 2 + MAX_MESHES_REACHED = 3 + DOWNLOAD_ERROR = 4 + DOWNLOADING = 5 + + +class EarthMeshDownloader: + def __init__(self, max_meshes, cached, center, min_dist, max_dist, min_error, max_error): + self.tile_url = "https://tile.googleapis.com" + self.root_cmd = "/v1/3dtiles/root.json" + + assert GOOGLE_API_KEY, "GOOGLE_API_KEY environment variable is not set" + + # read Root + b = bytes_from_url(self.tile_url + self.root_cmd + "?key=" + GOOGLE_API_KEY, False) + res = json_from_byte(b) + # find uri + self.uri = find_key(res["root"], "uri") + # extract context + self.context = self.uri.split("?")[-1] + + self.max_meshes = max_meshes + self.cached = cached + self.center = center + + self.min_dist = min_dist + self.max_dist = max_dist + + assert min_dist < max_dist, "min_dist must be less than max_dist" + + self.min_error = min_error + self.max_error = max_error + + assert min_error < max_error, "min_error must be less than max_error" + assert min_error >= 0, "min_error must be greater than or equal to 0" + + self.interrupted = False + self.nb_meshes = 0 + self.mesh_list = [] + self.boxes_str = [] + self.errors_str = [] + self.operation = None + + logger.info(f"EarthMeshDownloader initialized with: center {center}, min_dist {min_dist}, max_dist {max_dist}, min_error {min_error}, max_error {max_error}") + + @property + def status(self): + if self.interrupted: + return Status.INTERRUPTED + + if self.nb_meshes >= self.max_meshes: + return Status.MAX_MESHES_REACHED + + return Status.DOWNLOADING + + def _check_exit(self): + if self.status != Status.DOWNLOADING: + return True + + def _update(self): + if self.operation is None: + return + + try: + self.operation.updateLongProgress(float(self.nb_meshes) / float(self.max_meshes), "Loading mesh # %i" % (self.nb_meshes)) + except hou.OperationInterrupted: + self._exit() + + def _exit(self): + self.interrupted = True + + def _get_children(self, node): + if len(node) == 1: + if "content" not in node[0]: + logger.info("No content in single child node") + return node + + if node[0]['content']['uri'].split(".")[-1] == "json": + url = f"{self.tile_url}{node[0]['content']['uri']}?{self.context}&key={GOOGLE_API_KEY}" + return json_from_byte(bytes_from_url(url, self.cached))["root"]["children"] + return node + + def _download(self, child): + glb = child["content"]["uri"] + file_name = CACHE_PATH + "/" + hash_filename(glb.split("/")[-1]) + file_from_url(f"{self.tile_url}{glb}?{self.context}&key={GOOGLE_API_KEY}", file_name, self.cached) + boxes_str = ",".join([str(x) for x in child["boundingVolume"]["box"]]) + return file_name, boxes_str, str(child["geometricError"]) + + def download(self, node): + self._update() + + if self._check_exit(): + return + + if "children" not in node: + return + + children = node["children"] + + if len(children) == 0: + return + + children = self._get_children(children) + + for child in children: + self._update() + + if self._check_exit(): + return + + if "content" not in child: + self.download(child) + continue + + e = child["geometricError"] + + if e < self.min_error or e > self.max_error: + logger.info(f"Geometric Error: {e} is out of range [{self.min_error}, {self.max_error}]") + self.download(child) + continue + + bbx = buildBoundingBoxMatrix(child["boundingVolume"]["box"]) + dist = sdfBox(bbx, self.center) + + dist_norm = (dist - self.min_dist) / (self.max_dist - self.min_dist) + err = dist_norm * (self.max_error - self.min_error) + self.min_error + + l = max(min(err, self.max_error), self.min_error) + + if (l > e) or ("children" not in child): + logger.info(f"Distance: {dist}, Distance_norm: {dist_norm}, Error: {l}, Geometric Error: {e}") + mesh, boxes, error = self._download(child) + self.mesh_list.append(mesh) + self.boxes_str.append(boxes) + self.errors_str.append(error) + self.nb_meshes = self.nb_meshes + 1 + + self._update() + else: + self.download(child) + + return self.status + + def __call__(self): + node = json_from_byte(bytes_from_url(self.tile_url + self.uri + "&key=" + GOOGLE_API_KEY, self.cached))["root"] + with hou.InterruptableOperation("Get geometry with Google API...", long_operation_name = "Starting Tasks", open_interrupt_dialog = True) as operation: + self.operation = operation + status = self.download(node) + + logger.info(status) + diff --git a/scripts/utils.py b/scripts/utils.py new file mode 100644 index 0000000..a17b51f --- /dev/null +++ b/scripts/utils.py @@ -0,0 +1,101 @@ +import json +import urllib.request +import hashlib +import os +import logging + +try: + import hou +except ImportError: + pass + +logger = logging.getLogger(__name__) + + +CACHE_PATH = os.environ.get("EARTH_MESH_CACHE", "./cache") +GOOGLE_API_KEY = os.environ.get("GOOGLE_API_KEY", None) + +print(f"Cache path: {CACHE_PATH}") + +# Filename need to be encoded because filenames provided by google are too long for windows. +def hash_filename(filename): + name, ext = os.path.splitext(filename) # Splitting the filename from its extension + hashed_name = hashlib.sha256(name.encode()).hexdigest() # Encoding the filename (without extension) and hashing it + return hashed_name + ext # Returning the new filename with the original extension + + +def bytes_from_url(url, cached): + filename = hash_filename(url.split("?")[0].split("/")[-1]) + path = ("%s/%s") % (CACHE_PATH, filename) + if(cached and os.path.isfile(path)): + with open(path, "rb") as file: + return file.read() + else: + with urllib.request.urlopen(url) as response: + logger.info("Download %s", path) + bytes = response.read() + file_from_bytes(bytes, path) + return bytes + + +def json_from_byte(bytes): + return json.loads(bytes.decode("utf-8")) + + +def file_from_bytes(bytes, file_name): + with open(file_name, "wb") as binary_file: + binary_file.write(bytes) + + +def find_key(root, key): + children = root["children"] + for child in children : + if "content" in child: + content = child["content"] + if key in content: + return content[key] + r = find_key(child, key) + if r: + return r + return "" + + +def file_from_url(url, file_name, cached): + if(cached and os.path.isfile(file_name)): + return + file_from_bytes(bytes_from_url(url, cached), file_name) + + +def buildBoundingBoxMatrix(box): + # Bounding boxes don't have the same axis than the meshes + boundingbox2mesh = hou.Matrix4([ + [1.0, 0.0, 0.0, 0.0], + [0.0, 0.0, -1.0, 0.0], + [0.0, 1.0, 0.0, 0.0], + [0.0, 0.0, 0.0, 1.0] + ]) + return hou.Matrix4([ + [box[3], box[4], box[5], 0.0], + [box[6], box[7], box[8], 0.0], + [box[9], box[10], box[11], 0.0], + [box[0], box[1], box[2], 1.0]] + ) * boundingbox2mesh + + +def sdfBox(bbx, ctr): + bbx = bbx.asTupleOfTuples() + m = [hou.Vector3(bbx[0][0:3]), hou.Vector3(bbx[1][0:3]), hou.Vector3(bbx[2][0:3]), hou.Vector3(bbx[3][0:3])] + b = hou.Vector3(m[0].length(), m[1].length(), m[2].length()) + m = [m[0].normalized(), m[1].normalized(), m[2].normalized(), m[3]] + m = hou.Matrix4([ + [m[0].x(), m[0].y(), m[0].z(), 0.0], + [m[1].x(), m[1].y(), m[1].z(), 0.0], + [m[2].x(), m[2].y(), m[2].z(), 0.0], + [m[3].x(), m[3].y(), m[3].z(), 1.0] + ]) + mi = m.inverted() + p = hou.Vector3(ctr) * mi + # inspired by https://iquilezles.org/articles/distfunctions/ + q = hou.Vector3([abs(p.x()), abs(p.y()), abs(p.z())]) - b + return hou.Vector3(max(0.0,q.x()), max(0.0,q.y()), max(0.0,q.z())).length() + min(max(q.x(), max(q.y(), q.z())), 0.0) + \ No newline at end of file From 40594c9fc822fb9758d92749f6cd4aa11c10f751 Mon Sep 17 00:00:00 2001 From: Josiah Reeves Date: Thu, 27 Jun 2024 15:53:31 -0700 Subject: [PATCH 2/4] fix hole in min area --- scripts/main.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/main.py b/scripts/main.py index 748e19e..a85ec7a 100644 --- a/scripts/main.py +++ b/scripts/main.py @@ -137,10 +137,10 @@ def download(self, node): e = child["geometricError"] - if e < self.min_error or e > self.max_error: - logger.info(f"Geometric Error: {e} is out of range [{self.min_error}, {self.max_error}]") - self.download(child) - continue + # if e < self.min_error or e > self.max_error: + # logger.info(f"Geometric Error: {e} is out of range [{self.min_error}, {self.max_error}]") + # self.download(child) + # continue bbx = buildBoundingBoxMatrix(child["boundingVolume"]["box"]) dist = sdfBox(bbx, self.center) From c572a8e5dacd8e10bae44b288426c3334eb2809e Mon Sep 17 00:00:00 2001 From: Josiah Reeves Date: Fri, 28 Jun 2024 12:04:48 -0700 Subject: [PATCH 3/4] refactored code to match to package structure --- .gitignore | 15 +++++++------ Cache/dummy.txt | 0 EarthMesh.json | 14 ++++++++++++ EarthMesh/EarthMesh.2.0.hda | Bin 48048 -> 0 bytes README.md | 6 ++++++ .../EarthMesh_Test.hip | Bin 344889 -> 345367 bytes icon/Atlas.png | Bin 3865 -> 0 bytes icon/earth.png | Bin 3780 -> 0 bytes map/dummy.txt | 0 {EarthMesh => otls}/EarthMesh.1.0.hda | Bin otls/EarthMesh.2.0.hda | Bin 0 -> 48259 bytes {TextureAtlas => otls}/TextureAtlas.1.0.hda | Bin scripts/{ => python}/main.py | 4 ++-- scripts/{ => python}/utils.py | 12 ++++++++--- toolbar/EARTHMESH.shelf | 20 ++++++++++++++++++ 15 files changed, 60 insertions(+), 11 deletions(-) delete mode 100644 Cache/dummy.txt create mode 100644 EarthMesh.json delete mode 100644 EarthMesh/EarthMesh.2.0.hda rename EarthMesh_Test.hip => examples/EarthMesh_Test.hip (96%) delete mode 100644 icon/Atlas.png delete mode 100644 icon/earth.png delete mode 100644 map/dummy.txt rename {EarthMesh => otls}/EarthMesh.1.0.hda (100%) create mode 100644 otls/EarthMesh.2.0.hda rename {TextureAtlas => otls}/TextureAtlas.1.0.hda (100%) rename scripts/{ => python}/main.py (97%) rename scripts/{ => python}/utils.py (91%) create mode 100644 toolbar/EARTHMESH.shelf diff --git a/.gitignore b/.gitignore index 7be26c4..3f6009c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,12 @@ -/backup/ -/EarthMesh/backup/ -/TextureAtlas/backup/ +!Image/ + /render/ /Cache/*.json -/Cache/*.jpg /Cache/*.glb -/map/*.png -/map/*.jpg + +backup +__pycache__ + +*.pyc +*.png +*.jpg diff --git a/Cache/dummy.txt b/Cache/dummy.txt deleted file mode 100644 index e69de29..0000000 diff --git a/EarthMesh.json b/EarthMesh.json new file mode 100644 index 0000000..4d3319c --- /dev/null +++ b/EarthMesh.json @@ -0,0 +1,14 @@ +{ + "env": [ + { + "GOOGLE_MAPS_API_KEY": "YOUR_API_KEY" + }, + { + "EARTHMESH_PATH": "D:/Houdini/EarthMeshHoudini", + }, + { + "HOUDINI_PYTHONWARNINGS": "ignore" + } + ], + "path": "$EARTHMESH_PATH" +} \ No newline at end of file diff --git a/EarthMesh/EarthMesh.2.0.hda b/EarthMesh/EarthMesh.2.0.hda deleted file mode 100644 index 047e56435b569112ad2a2139b501fe806f975902..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48048 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 diff --git a/README.md b/README.md index c1175f8..84ca697 100644 --- a/README.md +++ b/README.md @@ -45,6 +45,12 @@ If you don't do that, most of the things you will see in the viewport won't be t ![Material Warning](https://github.com/xjorma/EarthMeshHoudini/blob/main/Image/Material%20Limit.png) +# Installation +- Download the repo. +- Place the **EarthMeshHoudini** folder somewhere on your local drive. It's important that you do not install **EarthMeshHoudini** directly into your $HOME/houdiniXX.X directory or into any other default Houdini installation directory, or else it may not properly be loaded when you start Houdini. +- Configure the **Google API Key** in the **EarthMesh.json** file and change the **EARTHMESH_PATH** to the path where you placed the **EarthMeshHoudini** folder. +- Copy the **EarthMesh.json** file to your $HOME/houdiniXX.X/packages folder. + ## How to use the HDA ### EarthMesh diff --git a/EarthMesh_Test.hip b/examples/EarthMesh_Test.hip similarity index 96% rename from EarthMesh_Test.hip rename to examples/EarthMesh_Test.hip index 173b15d9184e992f55741558e7be286332ad8b1b..efa569693115be5e56891997b62d37ec36bb88d3 100644 GIT binary patch delta 3182 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 diff --git a/icon/Atlas.png b/icon/Atlas.png deleted file mode 100644 index 0d75ad204335a00519db108fdc2d1c3202fb9e96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3865 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 b0pR}uGrTYv!2v2C00000NkvXXu0mjfRQPG; diff --git a/icon/earth.png b/icon/earth.png deleted file mode 100644 index 025d56077676cd0ddbe79bf5d0d1f4001a18fcf7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3780 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 literal 0 HcmV?d00001 diff --git a/TextureAtlas/TextureAtlas.1.0.hda b/otls/TextureAtlas.1.0.hda similarity index 100% rename from TextureAtlas/TextureAtlas.1.0.hda rename to otls/TextureAtlas.1.0.hda diff --git a/scripts/main.py b/scripts/python/main.py similarity index 97% rename from scripts/main.py rename to scripts/python/main.py index a85ec7a..9b5872c 100644 --- a/scripts/main.py +++ b/scripts/python/main.py @@ -104,8 +104,8 @@ def _get_children(self, node): def _download(self, child): glb = child["content"]["uri"] - file_name = CACHE_PATH + "/" + hash_filename(glb.split("/")[-1]) - file_from_url(f"{self.tile_url}{glb}?{self.context}&key={GOOGLE_API_KEY}", file_name, self.cached) + file_name = CACHE_PATH / hash_filename(glb.split("/")[-1]) + file_from_url(f"{self.tile_url}{glb}?{self.context}&key={GOOGLE_API_KEY}", file_name.as_posix(), self.cached) boxes_str = ",".join([str(x) for x in child["boundingVolume"]["box"]]) return file_name, boxes_str, str(child["geometricError"]) diff --git a/scripts/utils.py b/scripts/python/utils.py similarity index 91% rename from scripts/utils.py rename to scripts/python/utils.py index a17b51f..41896b0 100644 --- a/scripts/utils.py +++ b/scripts/python/utils.py @@ -3,6 +3,7 @@ import hashlib import os import logging +from pathlib import Path try: import hou @@ -12,7 +13,7 @@ logger = logging.getLogger(__name__) -CACHE_PATH = os.environ.get("EARTH_MESH_CACHE", "./cache") +CACHE_PATH = Path(os.environ.get("EARTH_MESH_CACHE", "./cache")) GOOGLE_API_KEY = os.environ.get("GOOGLE_API_KEY", None) print(f"Cache path: {CACHE_PATH}") @@ -26,8 +27,13 @@ def hash_filename(filename): def bytes_from_url(url, cached): filename = hash_filename(url.split("?")[0].split("/")[-1]) - path = ("%s/%s") % (CACHE_PATH, filename) - if(cached and os.path.isfile(path)): + + if not CACHE_PATH.exists(): + CACHE_PATH.mkdir(parents=True) # TODO: May want to do this somewhere else + + path = CACHE_PATH / filename + + if cached and path.is_file(): with open(path, "rb") as file: return file.read() else: diff --git a/toolbar/EARTHMESH.shelf b/toolbar/EARTHMESH.shelf new file mode 100644 index 0000000..74fcf5f --- /dev/null +++ b/toolbar/EARTHMESH.shelf @@ -0,0 +1,20 @@ + + + + + + + + + + + SOP + + + + From bad9acbeeb01ebee5a2d41223d04324f83e26a1a Mon Sep 17 00:00:00 2001 From: Josiah Reeves Date: Fri, 28 Jun 2024 13:04:17 -0700 Subject: [PATCH 4/4] fixed file_name return str --- .gitignore | 1 + scripts/python/main.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 3f6009c..51c8bcd 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ /Cache/*.json /Cache/*.glb +cache backup __pycache__ diff --git a/scripts/python/main.py b/scripts/python/main.py index 9b5872c..d7f26ad 100644 --- a/scripts/python/main.py +++ b/scripts/python/main.py @@ -107,7 +107,7 @@ def _download(self, child): file_name = CACHE_PATH / hash_filename(glb.split("/")[-1]) file_from_url(f"{self.tile_url}{glb}?{self.context}&key={GOOGLE_API_KEY}", file_name.as_posix(), self.cached) boxes_str = ",".join([str(x) for x in child["boundingVolume"]["box"]]) - return file_name, boxes_str, str(child["geometricError"]) + return file_name.as_posix(), boxes_str, str(child["geometricError"]) def download(self, node): self._update()