{"id":15014598,"url":"https://github.com/rozenmad/menori","last_synced_at":"2025-09-08T05:43:10.309Z","repository":{"id":40420370,"uuid":"282748292","full_name":"rozenmad/Menori","owner":"rozenmad","description":"Library for 3D rendering with LÖVE.","archived":false,"fork":false,"pushed_at":"2025-08-18T03:35:20.000Z","size":8151,"stargazers_count":250,"open_issues_count":5,"forks_count":12,"subscribers_count":11,"default_branch":"dev","last_synced_at":"2025-08-18T05:30:00.391Z","etag":null,"topics":["3d","love2d","lua"],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rozenmad.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-07-26T23:07:34.000Z","updated_at":"2025-08-18T03:35:24.000Z","dependencies_parsed_at":"2024-09-20T10:31:03.194Z","dependency_job_id":"4f645874-fc20-46df-aabd-bfb8299a235a","html_url":"https://github.com/rozenmad/Menori","commit_stats":{"total_commits":78,"total_committers":3,"mean_commits":26.0,"dds":"0.10256410256410253","last_synced_commit":"f99b7c0cf01e21a311a3cb25b9f2a81e32b673e3"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rozenmad/Menori","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rozenmad%2FMenori","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rozenmad%2FMenori/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rozenmad%2FMenori/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rozenmad%2FMenori/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rozenmad","download_url":"https://codeload.github.com/rozenmad/Menori/tar.gz/refs/heads/dev","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rozenmad%2FMenori/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274139722,"owners_count":25229075,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-08T02:00:09.813Z","response_time":121,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["3d","love2d","lua"],"created_at":"2024-09-24T19:45:49.627Z","updated_at":"2025-09-08T05:43:10.300Z","avatar_url":"https://github.com/rozenmad.png","language":"Lua","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Menori\n\nLÖVE library for 3D rendering based on scene graph. Support glTF 2.0 (implemented: meshes, materials, textures, skins, skeletons, animations). Assets may be provided either in JSON (.gltf) or binary (.glb) format.\n\nWorks on LÖVE 11.4 and higher.\n\n[Web version](https://rozenmad.github.io/menori_demo1201/)\nBuilt using [love-web-builder](https://github.com/rozenmad/love-web-builder)\n\n[Documentation](https://rozenmad.github.io)\n\nYou can generate documentation using `ldoc -c menori/docs/config.ld -o index .`\n\n![preview_example](preview.png)\n\n# Usage Example\n\n``` lua\nlocal menori = require 'menori'\n\nlocal ml = menori.ml\nlocal vec3 = ml.vec3\nlocal quat = ml.quat\n\nfunction love.load()\n\tlocal _, _, w, h = menori.app:get_viewport()\n\tcamera = menori.PerspectiveCamera(60, w/h, 0.5, 1024)\n\tenvironment = menori.Environment(camera)\n\n\troot_node = menori.Node()\n\n\tlocal gltf = menori.glTFLoader.load('examples/assets/etrian_odyssey_3_monk.glb')\n\tlocal scenes = menori.NodeTreeBuilder.create(gltf, function (scene, builder)\n\t\tanimations = menori.glTFAnimations(builder.animations)\n\t\tanimations:set_action(1)\n\n\t\tscene:traverse(function (node)\n\t\t\tif node.mesh then\n\t\t\t\tnode.material:set(\"baseColor\", {0.85, 0.95, 1.0, 1})\n\t\t\tend\n\t\tend)\n\tend)\n\n\troot_node:attach(scenes[1])\nend\n\nlocal scene = menori.Scene()\n\nfunction love.draw()\n\tlove.graphics.clear(0.3, 0.25, 0.2)\n\tscene:render_nodes(root_node, environment, {\n\t\tnode_sort_comp = menori.Scene.alpha_mode_comp\n\t})\n\n\tlove.graphics.print(love.timer.getFPS(), 10, 10)\nend\n\nfunction love.update(dt)\n\tscene:update_nodes(root_node, environment)\n\n\tlocal q = quat.from_euler_angles(0, math.rad(20), math.rad(10)) * vec3.unit_z * 2.0\n\tlocal v = vec3(0, 0.5, 0)\n\tcamera.center = v\n\tcamera.eye = q + v\n\tcamera:update_view_matrix()\n\n\tanimations:update(dt)\n\n\tif love.keyboard.isDown('escape') then\n\t\tlove.event.quit()\n\tend\nend\n```\n\nSee ```main.lua``` for a more complete example.\n\n# License\nMIT","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frozenmad%2Fmenori","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frozenmad%2Fmenori","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frozenmad%2Fmenori/lists"}