Skip to content

Infernux 0.1.5 · 熔炉

Choose a tag to compare

@ChenlizheMe ChenlizheMe released this 27 Apr 04:58
· 523 commits to master since this release

Infernux v0.1.5 · 熔炉

This release lands the 3D animation foundation (skeletal animation, skinned mesh rendering, embedded FBX takes), reworks the Project / Inspector workflows and asset previews, adopts the official Chinese name 熔炉 (Róng Lú), and ships a fully rebuilt NASA-Punk styled documentation site. Baseline for comparison: v0.1.4 (08f473957c213e922e9db009138d3b8916a5bd13).


3D animation and skinning

  • AnimClip3D assets: new core asset type with importer, schema versioning, and editor inspector. Embedded FBX takes are surfaced under each model as virtual .animclip3d sub-assets and can be dragged directly into the FSM canvas.
  • Skeletal animation runtime: SkeletalAnimator Python component plays back AnimClip3D data through the existing SpiritAnimator / AnimFSM graphs; states accept ANIMCLIP3D payloads alongside the existing 2D path.
  • Skinned mesh rendering: new SkinnedMeshRenderer component, InxSkinnedMesh resource, GPU skinning path, and a dedicated SkinnedModelCache. The render pipeline gets matching descriptor / pipeline-manager updates for skinned draws.
  • Embedded takes UX: the Project panel now appends per-model sub-assets (materials + animation takes) with proper animclip3d icons and a real expand/collapse glyph next to the model thumbnail. Take names that come back as Armature | Action are normalised to just Action in the row label.
  • FSM + node graph: the generic node-graph canvas now accepts any drag-drop payload type, fixes drop targeting for ANIMCLIP3D, and routes embedded takes through GUID::subanim virtual paths. The FSM editor adopts the matching upgrades.

Editor and asset workflows

  • Project panel: redesigned model expand strip (pixel-aligned 32×32 PNG icon, hit-tested separately from the thumbnail), simplified label rendering, animation-clip rows that no longer collide with the model thumbnail icon, and a faster cached label path. Sub-asset rows correctly invoke the asset details renderer (formerly asset_inspectorasset_details_renderer).
  • Inspector panel: centred component icons with snapped pixel coordinates (no more bilinear blur on small icons), low-resolution preview path for 16 px component badges, and missing-texture cleanup in the material preview path.
  • Resource previews: new GPUMeshPreview (Vulkan-backed), updated GPUMaterialPreview, async transfer context (AsyncTransferContext), descriptor bind tracing, and a unified query_or_schedule_texture_preview flow used by Project + Inspector + asset details.
  • Bootstrap and engine: _bootstrap_wiring split, texture_task_bridge, preferences store (preferences_store, ide_preference), and a refreshed asset-details renderer module replacing the old monolithic asset inspector.
  • Editor icons: a complete redraw of every component icon under python/Infernux/resources/icons/components/ to a transparent NASA-Punk style 64×64 PNG (Audio / Collider / SkeletalAnimator / SkinnedMeshRenderer / SpiritAnimator / SpriteRenderer / UI Canvas / UI Button / UI Image / UI Text), plus 64×64 NASA-Punk file-type icons (animclip2d, animclip3d, animfsm, shader_hlsl, etc.) and chevron icons (model_expand_open, model_expand_closed).

Renderer and core

  • Rendering core: InxRenderer, InxVkCoreModular, VkCoreGlobals, VkPipelineManager, MaterialDescriptor, MaterialPipelineManager, OutlineRenderer, RenderPassOutput, ScriptableRenderContext, VkCoreDraw, and VkCoreMaterial all received targeted updates for skinning, descriptor reuse, and async transfer.
  • Vulkan device layer: VkDeviceContext and VkResourceManager extended with new sampler / image helpers, plus a brand-new VkHandle translation layer.
  • Asset / resource layer: new InxSkinnedMesh and SkinnedModelCache, MeshLoader extended for skinning data, ConcreteImporters updated to surface model material slots and animation take metadata.

Python layer

  • Components: skeletal_animator.py, builtin/skinned_mesh_renderer.py, the rename animator2d.pyspirit_animator.py, and broader ref_wrappers / serialized_field / _component_native refinements.
  • Core: core/animation_clip3d.py, core/anim_state_machine.py, expanded core/assets.py, core/asset_ref.py, core/asset_types.py, core/material.py.
  • Engine / UI: preferences store, IDE preferences, async texture bridge, refreshed inspector_material, inspector_ui_components, node_graph_view, animfsm_editor_panel, animclip2d_editor_panel, project_utils, window_manager, plus an undo system split (_animfsm_commands, _helpers, _property_commands, _renderstack, _snapshots, _trackers, _component_commands).

Documentation, branding, and site

  • Engine name: the project now formally adopts the Chinese name 熔炉. Repository, package, and CLI strings remain Infernux. README.md and README-zh.md carry the bilingual title (Infernux · 熔炉 / 熔炉 · Infernux); the Python package metadata (pyproject.toml) reflects the same.
  • Docs site rebuild: docs/index.html, docs/roadmap.html, docs/wiki.html, docs/js/i18n.js, docs/css/style.css, docs/css/mission.css, docs/css/roadmap.css, docs/css/wiki.css are completely rewritten in a NASA-Punk / Starfield-inspired style:
    • persistent top mission ribbon with the bilingual engine name (INFERNUX · 熔炉), driven entirely by i18n;
    • keeps the existing data-i18n / data-href-en / data-href-zh mechanism, so the API docs (wiki/site/en|zh/api/index.html) and the wiki manifest (assets/wiki-docs.json) continue to render through js/wiki.js;
    • primary brand colour stays at #eb5757; light theme uses an off-white NASA-style cream surface;
    • the runtime capture section now embeds the existing docs/assets/demo.png (height-shaded voxel scene at 173 FPS).
  • Wiki API index: Version 0.1.5 / 版本 0.1.5 rolled through docs/wiki/generate_api_docs.py, docs/wiki/docs/{en,zh}/api/index.md, and the corresponding generated HTML.
  • Python wheel: infernux-0.1.5-cp312-cp312-win_amd64.whl (CPython 3.12, Windows amd64) and matching infernux-0.1.5.tar.gz are produced by the normal CMake release preset (package_and_install_python); the Hub portable bundle (dist/Infernux Hub/) and dist/installer/InfernuxHubInstaller.exe continue to ship as in prior releases.

Upgrade notes

  • Python 3.12 remains the supported baseline for the packaged wheel (no Python version change in this release).
  • Animation formats (animclip2d / animclip3d / animfsm) are still evolving; treat the 3D path as preview the same way 2D was treated in 0.1.4.
  • Module rename: animator2dspirit_animator for the runtime Python module. The Animator3D alias is fully gone in 0.1.5; switch to SkeletalAnimator / SpiritAnimator.
  • Inspector renderer rename: engine/ui/asset_inspector.pyengine/ui/asset_details_renderer.py. External call sites importing asset_inspector should switch to the new module name.
  • Resource paths: the bundled icon set under python/Infernux/resources/icons/ has been refreshed (file-type icons, component icons). Custom projects that overrode any of these icons should re-validate their copies against the new 64×64 transparent-background versions.
  • Docs site: docs/css/mission.css, docs/css/roadmap.css, and docs/css/wiki.css have new class hooks. Forks that customised the site should diff against this release before redeploying.

Thank you

Thanks to everyone who tested the 3D animation path, surfaced editor icon / preview issues, and gave feedback on the docs site reskin — the 0.1.5 release is shaped directly by that loop.