project
Ghost Hand
Public Unreviewedby John Lauer
A small battery gadget that keeps an automatic sink faucet running while you use the sink: it learns the faucet's timeout, re-arms with the shortest blip, and stops after 10 minutes or when picked up.
main
John Lauer
Rev 2 hero 3D: an adult hand for scale beside the case (CC0, MakeHuman base mesh)
9852f34
1d ago
import trimesh, numpy as np, networkx as nx
h=trimesh.load('hand_ref.glb',force='mesh'); mat=h.visual.material
e=h.edges_sorted; u,c=np.unique(e,axis=0,return_counts=True); G=nx.Graph(); G.add_edges_from(u[c==1].tolist())
V=h.vertices; F=list(h.faces)
for comp in nx.connected_components(G):
if len(comp)<6: continue
cyc=[x for x,_ in nx.find_cycle(G.subgraph(comp))]; ci=len(V); V=np.vstack([V,V[cyc].mean(0)])
F+=[[cyc[i],cyc[(i+1)%len(cyc)],ci] for i in range(len(cyc))]
h2=trimesh.Trimesh(V,np.array(F),process=True); trimesh.repair.fix_normals(h2); h2.visual=trimesh.visual.TextureVisuals(material=mat); h2.export('hand_ref.glb')