牧码人--Vibe Coding作品和资源
提示词 免费 原创

透明物理幕布·手势交互

由 管理员 投稿,4 次浏览。

单文 HTML, p5.js + MediaPipe Hands, Canvas 2D.
核心概念: 屏幕里技一块隐形的布,表面是摄像头实时画面(布完全看不见),背后藏着上传的图或视频。手在空中pinch(持指食指捏合)抓住布,甩起或放下---掀开的瞬间,背后画面被揭示。
光学伪装是关键: 三层渲染。底层全屏画摄像头,中层把上传媒体定在布的初位置;顶层用布的周长做cx.cip() 再画一次摄像头。三层初始位置完全重合所以布消失,一动就漏出中层内容。Verlet 布料物理:网格 38x35, 顶行 pin住。 FRICTION 0.94.GRAVITY 0.08,约束迭代12代, stick stiffness 0.4 偏软避免锁死。
每个点随机偏移 (X±20, Y -35-5)用于甩起时不规则堆叠。Perlin noise 微风营造布科呼吸感。
质感渲染: 遍历每与个quad 计算当前面积与原面积之比,压缩区域叠色 (最高 alpha 120)做褶皱阴影,拉伸区域叠白色(最高alpha 60)做高光。边缘双层Curve描边一一内圈黑alpha 30 strokeWeight 4, 外圈 alpha 180 strokeWeight 1.5 + shadowBlur 12, 制液态光泽边缘.

手势识别: MediaPipe Hands 双手同时操作。pinch 距高 hypot (拇指-食指), 带hysteresis 防料(按下阈值 0.05,松开 0.08)。坐标取两指中点,x轴镜像。帧间手部追踪用200px, 半径匹配最近上一帧手,防止左右手切换时丢状态。抓取半径 150px。鼠标和触摸有fallback。

评论

登录后可以评论和获取积分。
还没有评论,欢迎留下第一个复刻反馈。