Nonomi 个人学习记录

探索三维世界里的场景与交互。

Unreal Engine · 网页接入 · 程序化草 · 实景合成

UE 项目麦田编辑器截图,局部构图01 / 麦田记录
麦田 / 场景与植被
UE 项目截图 / 局部展示

场景记录

场景里的光、天气与回应。

从校园场景开始,尝试让天气、屏幕和道具
成为环境里可以回应你的部分。

本人项目的 Unreal Engine 校园场景,金色阳光照在环形建筑与道路上
UE 项目原始画面INTERACTIVE ATMOSPHERE
ATMOSPHERE STUDY
☀
DAYLIGHT / 晴日

保留项目原始画面,观察场景的光影与空间。

网页氛围演示 · 非实时气象
项目画面 / 原始项目素材天气粒子为网页叠加效果

网页与三维

一份网页。
进入三维世界。

HTML 负责交互,UE 负责把它放进世界。
从最终画面,逐层看见背后的连接。

03 / MESH MATERIAL
02 / RENDER TARGET
playtable.html
点击空位,落下一子
HTML / 交互内容
纹理 / 实时画面
网格 / 场景屏幕
浏览器结构演示 · 非 UE 在线运行
HTML + WidgetRender TargetMesh Material

THE EXPERIENCE

网页交互,从内容开始。

点击棋盘落子,内容会更新。在 UE 项目中,同一份网页交互由 Widget 承载,再显示到三维棋盘的屏幕材质上。

    依据《电子棋盘网页屏幕项目纪要》还原显示链路。

    图形学习

    看见麦田。
    理解每一次作用。

    从工程截图到局部作用。
    记录植被的密度、触碰反馈与车辆作业状态。

    UE 麦田工程原始截图,保留编辑器标记
    UE / 麦田编辑器截图
    工程原始截图可展开原理示意

    密度与距离

    密度属于画面。
    细节按距离分配。

    麦田截图保留了近处的穗与叶片,也展示了连续铺开的植被。距离改变时,把计算与形体细节分给更需要它们的位置。

    近景 / 单株与麦穗中景 / 低面簇远景 / 简化体积

    项目中的优化思路。图上分区仅作距离层次示意,不代表这张截图的实际 LOD 边界。

    局部触碰

    接触时弯折,
    离开后再回弹。

    风负责整体节奏;接触只改变作用范围内的小麦。先判断位置与距离,再分配弯曲权重,离开接触区后进入恢复过程。

    接触位置→范围与权重→弯曲/恢复

    展开原理标记后,可调整范围示意。下方另有可操作的三维重建;截图本身保持原样。

    车辆作业

    从耕具状态,
    连接到地面反馈。

    运行截图中,耕具已放下、车速为 0.0 km/h,累计显示已开垦 19.7 m²。它们是这一次截图的状态记录。

    输入切换→耕具状态→作用区域→地面反馈

    上方链路是实现思路示意。作业面积需要对重复经过的区域去重,具体统计方法以对应工程源码、开发记录与运行验证为准。

    交互原理实验打开三维麦田 ↗

    WEBGL / 可操作重建

    观察距离停风与触碰回弹。此处是网页演示。

    INTERACTIVE FIELD STUDY近景 · 保留麦穗细节
    MOVE THROUGH THE FIELD划过麦田,
    看它轻轻回弹。

    按住拖动 / 手机触摸

    接触区 · 半径对应 85 cm
    WebGL 交互重建 / 非 UE 录屏示范距离停风,不作性能基准
    THE LOGIC实现细节,
    继续往下看。

    学习记录 / PROCEDURAL GRASS

    程序化草

    学习参考了《对马岛之魂》团队 Sucker Punch Productions 在 GDC 2021 的程序化草公开分享,主讲人为 Eric Wohllaib。

    Procedural Grass in ‘Ghost of Tsushima’ ↗

    下方为独立制作的概念示意,展示根点、分簇与弯曲之间的关系。

    程序化草的根点分布示意

    根点决定每株草从哪里生长。

    状态与动画

    视线、等待、转向。
    一次回应的三个阶段。

    把“玩家在身后”变成一段自然的回应,
    而不是每一帧都急着原地旋转。

    三维导览
    Nonomi / G1
    待机 · 头部观察

    调整位置,观察回应。

    身后停留0.00 / 1.50 s
    动作原理与模型来源 +
    1. 01
      小角度,头部先回应。

      NeckYaw 平滑插值,避免视线突然跳动。

    2. 02
      身后持续 1.5 秒,再转身。

      动画负责姿势,Actor Yaw 负责最终朝向。

    3. 03
      回到前方 0.5 秒,重新武装。

      行走时由 Character Movement 与 Stride Warping 分工。点击“走到身后”可重新开始本页演示。

    BP_GuideNPC 管理路线、对话与转身条件;ABP_GuideNPC 处理头部观察、90°/180° 转身状态与步幅扭曲(0.75–1.8)。本页使用外部机器人资产解释状态,不复刻原角色动画;独立头部观察为页面新增的演示关节,并非实机 G1 的执行机构。

    Unitree G1 资产改编 · 导览状态演示。Model: Unitree Robotics / MuJoCo Menagerie · BSD-3-Clause。完整许可保留于页尾。

    输入与反馈

    输入之后,
    得到清晰的反馈。

    绘画、声音与材质状态。
    把输入、反馈与历史记录连接起来。

    01 / PAINT & FIRE

    陶器:绘画与烧制

    在器物上画一笔,再看材质如何改变。

    素坯 · 可绘画
    这一笔,怎么画到 UE 模型上? +

    焦点对象 → Complex Line Trace → Find Collision UV → Render Target 画线。每段记录起点 UV、终点 UV、擦除标志和颜色,撤销时清空后按历史重放。烧制由 BP_Kiln 驱动状态,PotteryMID 更新材质,完成后锁定绘画。本页用射线与真实 UV 纹理绘制重建交互。

    02 / ONE SAMPLE, MANY NOTES

    电子琴:音高与多音

    点击琴键发声,试试同时按住几个音。手机可切换高低音区。

    25 个琴键,为什么不需要 25 份音频? +

    UE 的 DT_ElectronicKeyboardKeys 保存 Semitone Offset;HandleKeySignal 读取后计算音高倍数 2^(n/12),再播放所选音色。音色和音高分开。本页使用 Web Audio 合成音示范音高关系,不包含项目内的原采样音色。

    项目中使用的花瓶、茶杯、茶壶与电窑资产画面
    BEHIND THE INTERACTION

    交互系统背后的三维资产。

    来自原包的陶器与窑炉资产画面。
    保留真实制作痕迹,也是学习记录的一部分。

    BLENDER / LIVE-ACTION COMPOSITING

    实景合成

    在 Blender 中将三维物体融入实拍画面,让虚拟内容与真实环境出现在同一镜头里。

    实拍画面三维物体合成画面

    合成过程记录整理中

    个人工具

    围绕学习过程的小工具。

    围绕真实工作流程的小实验,
    让下一次尝试更容易开始。

    HTML → AFTER EFFECTS
    Ae↗

    LiveCraft

    用浏览器逐帧捕获网页动效,生成透明 PNG 序列,再带入 AE 合成。

    源码记录 +nuomisp / ae-html-renderer ↗
    UNDERSTAND THE CONNECTIONS

    蓝图读取实践

    让 AI 更准确地理解蓝图节点与连接,减少只凭截图反复解释的沟通。

    支持范围随项目验证持续整理
    A PERSONAL WORKFLOW
    ⌘

    私有 UE 网关

    先检查身份、解锁状态与操作范围,再把已允许的请求交给本机工具。

    仅展示架构 · 无访客操作入口
    关于 / 学习过程

    关于这份记录

    现代农业技术学生,创作三维场景、网页交互与实景合成作品。
    我提出想法,与 AI 协作实现,再通过实际体验反复调整。

    回到开头 ↑
    资源署名与许可 +

    机械模型:Unitree Robotics / MuJoCo Menagerie。已转换网格格式、简化几何并调整材质;页面展示不代表原作者背书。

    Copyright (c) 2016-2023 HangZhou YuShu TECHNOLOGY CO.,LTD. ("Unitree Robotics")
    All rights reserved.
    
    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions are met:
    
    * Redistributions of source code must retain the above copyright notice, this
      list of conditions and the following disclaimer.
    
    * Redistributions in binary form must reproduce the above copyright notice,
      this list of conditions and the following disclaimer in the documentation
      and/or other materials provided with the distribution.
    
    * Neither the name of the copyright holder nor the names of its
      contributors may be used to endorse or promote products derived from
      this software without specific prior written permission.
    
    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
    AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
    DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
    FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
    DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
    SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
    OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
    OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    
    Three.js / MIT 许可 +
    The MIT License
    
    Copyright © 2010-2023 three.js authors
    
    Permission is hereby granted, free of charge, to any person obtaining a copy
    of this software and associated documentation files (the "Software"), to deal
    in the Software without restriction, including without limitation the rights
    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    copies of the Software, and to permit persons to whom the Software is
    furnished to do so, subject to the following conditions:
    
    The above copyright notice and this permission notice shall be included in
    all copies or substantial portions of the Software.
    
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
    THE SOFTWARE.
    

    项目原始截图