1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7987],{685:function(e,t,n){n.d(t,{Z:function(){return d}});var r=n(6042),o=n(9534),a=n(5893),i=n(7294),s=n(3840),l=n(3857),c=n(9477),u=["A_Person_waving_02222026_154618","A_Person_shoots_02222026_183413","A_Person_performing_02032026_231057","A_Person_performs_02082026_193316","Reference|SMPLH_Animation|Base Layer.006"];function d(e){var t=e.currentSection,n=void 0===t?0:t,d=(0,o.Z)(e,["currentSection"]),h=(0,i.useRef)(),m=(0,i.useRef)(null),v=(0,i.useRef)(!1),p=(0,i.useRef)(!1),f=(0,i.useRef)(0),g=(0,i.useRef)(null),y=(0,i.useRef)(null),b=(0,s.L)("/MMAI_homepage_avatar.glb"),k=b.scene,w=b.scenes,C=b.animations,P=(0,i.useMemo)((function(){if(!w||0===w.length)return k;return w.find((function(e){var t=!1;return e.traverse((function(e){e.isMesh&&(t=!0)})),t}))||k}),[k,w]),x=(0,l.v)(C,h).actions,_=(0,i.useMemo)((function(){return null!==C&&void 0!==C?C:[]}),[C]),M=(0,i.useMemo)((function(){if(!_.length)return[];var e=new Map(_.map((function(e){return[e.name,e]}))),t=u.map((function(t){return e.get(t)})).filter(Boolean);return t.length>0?t:_.slice(0,5)}),[_]);return(0,i.useEffect)((function(){if(m.current!==P.uuid){m.current=P.uuid;var e=(new c.Box3).setFromObject(P);if(!e.isEmpty()){var t=new c.Vector3,n=new c.Vector3;e.getSize(t),e.getCenter(n);var r=t.y>0?.22/t.y:1;P.scale.multiplyScalar(r),P.position.sub(n.multiplyScalar(r));var o=(new c.Box3).setFromObject(P);P.position.y-=o.min.y-.05}P.traverse((function(e){e.isMesh&&(e.visible=!0,e.frustumCulled=!1)}))}}),[P]),(0,i.useEffect)((function(){if(null===C||void 0===C?void 0:C.length){var e,t=[];P.traverse((function(e){e.isMesh&&t.push(e.name||"(unnamed-mesh)")})),console.info("[HomepageModel] glb loaded",{sceneCount:null!==(e=null===w||void 0===w?void 0:w.length)&&void 0!==e?e:0,clipCount:C.length,clipNames:C.map((function(e){return e.name})),sectionClipCount:M.length,sectionClipNames:M.map((function(e){return e.name}
1)),meshCount:t.length,meshNames:t,bounds:function(){var e=(new c.Box3).setFromObject(P),t=new c.Vector3,n=new c.Vector3;return e.getSize(t),e.getCenter(n),{size:[Number(t.x.toFixed(3)),Number(t.y.toFixed(3)),Number(t.z.toFixed(3))],center:[Number(n.x.toFixed(3)),Number(n.y.toFixed(3)),Number(n.z.toFixed(3))]}}()})}}),[P,w,C,M]),(0,i.useEffect)((function(){if(_.length){var e=new Set(_.map((function(e){return e.name}))),t=u.filter((function(t){return!e.has(t)}));t.length&&console.warn("[HomepageModel] missing expected homepage tracks",{missing:t})}}),[_]),(0,i.useEffect)((function(){if(x&&0!==Object.keys(x).length&&0!==M.length){var e=function(){g.current&&(clearTimeout(g.current),g.current=null),y.current&&(clearTimeout(y.current),y.current=null)},t=function(){Object.values(x).forEach((function(e){return e.fadeOut(.45)}))},r=function(e){t();var n=M[Math.min(e,M.length-1)];if(n){var r=x[n.name];r&&(r.reset().fadeIn(.45).play(),r.loop=c.LoopOnce,r.clampWhenFinished=!0)}},o=function(){if(p.current&&0===n&&0!==M.length){var e=M[f.current%M.length],r=e?x[e.name]:null;if(r){t(),r.reset().fadeIn(.55).play(),r.loop=c.LoopOnce,r.clampWhenFinished=!0;var a=Math.max(1e3*(r.getClip().duration+.28),900);f.current+=1,y.current=setTimeout(o,a)}}};return n>0?(v.current=!0,p.current=!1,e(),r(n),function(){return e()}):(e(),v.current?(p.current=!1,r(0)):(p.current=!0,f.current=0,g.current=setTimeout(o,1200)),function(){return e()})}}),[n,x,M]),(0,a.jsx)("primitive",(0,r.Z)({ref:h,object:P},d))}s.L.preload("/MMAI_homepage_avatar.glb")},6970:function(e,t,n){n.d(t,{Z:function(){return u}});var r=n(5893),o=n(7294),a=n(338),i=n(9477),s={uniforms:{u_time:{value:0},u_resolution:{value:new i.Vector2},u_scroll:{value:0},u_mainColor:{value:new i.Color("rgb(35, 219, 225)")},u_transition:{value:0}},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n ",fragmentShader:'\n uniform vec2 u_resolution;\n uniform float u_time;\n uniform float u_scroll;\n uniform vec3 u_mainColor;\n uniform float u_transition;\n varying vec2 vUv;\n\n float my_smoothstep(float edge0, float edge1, float x) {\n float t = clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0);\n return t * t * (3.0 - 2.0 * t);\n }\n\n // Based on "Centrifuge 2" - adapted for GLSL\n void main() {\n vec3 fragColor = vec3(0.0);\n float time = -u_time * 0.1 - u_scroll * 2.0;\n \n vec2 uv = (gl_FragCoord.xy - 0.5 * u_resolution.xy) / u_resolution.y;\n\n // Create a radial wave for the transition\n float dist = length(vUv - 0.5);\n float wave_radius = u_transition * 0.7; // Pulse animates radius from 0 to 0.7 and back\n float wave_width = 0.05 + u_transition * 0.1;\n float ring = my_smoothstep(wave_radius - wave_width, wave_radius, dist) - my_smoothstep(wave_radius, wave_radius + wave_width, dist);\n\n // Gentle bend effect during transition, localized to the ring\n uv.y += sin(uv.x * 10.0 + time * 0.5) * 0.012 * ring;\n\n vec3 p,P;\n float z = 0.0, d;\n\n for(float i=0.0; i<50.0; i++) {\n vec3 rayDir = normalize(vec3(uv, 1.0));\n p = z * rayDir;\n \n float p_y_orig = p.y;\n p.y -= 7.0;\n\n P = vec3(atan(p.y, p.x)/0.1 + time, p.z*0.2 - 5.0*time, length(p.xy)-11.0);\n \n d = length(vec4(P.z, cos(P + cos(P / 0.2)) - 1.0)) * 0.5 - 0.1;\n\n z += d;\n \n vec3 color_variation = vec3(8.0, 7.0, 5.0);\n fragColor += (1.2 - cos(p.z / color_variation)) / d;\n }\n\n fragColor = tanh(fragColor / 200.0);\n\n // Vibrance-only pulse: keep existing portal hue, just increase saturation softly.\n vec3 baseColor = fragColor * u_mainColor;\n float luma = dot(baseColor, vec3(0.299, 0.587, 0.114));\n float vibrance = clamp(u_transition * 0.7 + ring * 0.3, 0.0, 1.0);\n fragColor = baseColor + (baseColor - vec3(luma)) * vibrance;\n fragColor *= (1.0 + vibrance * 0.08);\n fragColor = clamp(fragColor, 0.0, 1.0);\n\n gl_FragColor = vec4(fragColor, 1.0);\n }\n '};function l(e){var t=e.totalPages,n=e.currentSectionRef,i=e.cameraStateRef,l=(0,o.useRef)(null),c=(0,a.A)(),u=c.size,d=c.viewport,h=(0,o.useRef)({active:!1,startTime:0,fromPage:0,transitionDirection:1}),m=(0,o.useRef)(0),v=(0,o.useRef)(1),p=(0,o.useRef)(n.current),f=(0,o.useRef)(0),g=(0,o.useRef)(0);return(0,a.C)((function(e,r){if(l.current){var o=n.current/Math.max(t-1,1),a=i.current,s=n.
1current;s!==p.current&&(v.current=s>p.current?1:-1,h.current.active=!0,h.current.startTime=e.clock.elapsedTime,h.current.transitionDirection=v.current,h.current.fromPage=s,p.current=s),m.current+=r*v.current;var c=1-Math.exp(6.5*-r);f.current+=(o-f.current)*c,l.current.uniforms.u_time.value=m.current,l.current.uniforms.u_scroll.value=f.current,l.current.uniforms.u_resolution.value.x=u.width*d.dpr,l.current.uniforms.u_resolution.value.y=u.height*d.dpr;var y=0;if(h.current.active){var b=e.clock.elapsedTime-h.current.startTime;if(b>.9)h.current.active=!1,h.current.fromPage=s;else{var k=b/.9,w=k*k*(3-2*k);y=Math.sin(w*Math.PI)}}var C=Math.min(.15*a.velocity,.08),P=Math.min(y+C,1),x=1-Math.exp(8*-r);g.current+=(P-g.current)*x,l.current.uniforms.u_transition.value=g.current}})),(0,r.jsxs)("mesh",{scale:[8*d.width,8*d.height,1],position:[0,0,-4],children:[(0,r.jsx)("planeGeometry",{args:[1,1,1,1]}),(0,r.jsx)("shaderMaterial",{ref:l,args:[s]})]})}function c(e){var t=e.opacity,n=void 0===t?.45:t,o=(0,a.A)().viewport;return(0,r.jsxs)("mesh",{scale:[8*o.width,8*o.height,1],position:[0,0,-3],children:[(0,r.jsx)("planeGeometry",{args:[1,1]}),(0,r.jsx)("meshBasicMaterial",{color:"black",transparent:!0,opacity:n})]})}function u(e){var t=e.totalPages,n=e.currentSectionRef,a=e.cameraStateRef,i=e.includeDarkOverlay,s=void 0!==i&&i,u=e.overlayOpacity,d=void 0===u?.45:u,h=(0,o.useRef)(0),m=(0,o.useRef)({velocity:0,dirX:0,dirY:0}),v=null!==n&&void 0!==n?n:h,p=null!==a&&void 0!==a?a:m;return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(l,{totalPages:t,currentSectionRef:v,cameraStateRef:p}),s&&(0,r.jsx)(c,{opacity:d})]})}},8109:function(e,t,n){n.d(t,{e:function(){return o}});var r=n(7294);function o(){var e=(0,r.useState)(!1),t=e[0],n=e[1],o=(0,r.useState)(!1),a=o[0],i=o[1];return(0,r.useEffect)((function(){var e=window.matchMedia("(max-width: ".concat(1023,"px)")),t=function(){return n(e.matches)};return t(),i(!0),e.addEventListener("change",t),function(){return e.removeEventListener("change",t)}}),[]),{isPortalMobile:t,layoutReady:a}}},6535:function(e,t,n){n.d(t,{Dk:function(){return s},F9:function(){return o},SY:function(){return a},Wx:function(){return l},gr:function(){return c},rD:function(){return i},vF:function(){return r}});var r=[{id:"prompt",code:"01",label:"Prompt",title:"Natural language in. Motion out.",body:"Describe the action in plain English \u2014 \u201cwarrior charging forward\u201d, \u201csalsa turn, then plant\u201d. The model reads intent, timing, and style.",lines:[{k:"In",v:"Any language, 2\u201310s clips"},{k:"Control",v:"Speed, intensity, seed"},{k:"Out",v:"Rigged character motion"}]},{id:"direct",code:"02",label:"Direct",title:"Lock the pose. Draw the path.",body:"A still becomes a pose key. Floor marks become staging. Sketch a route and generate once the shot is placed.",lines:[{k:"Pose",v:"From photo or the rig"},{k:"Path",v:"Spline on the stage floor"},{k:"Marks",v:"Waypoints + hand/foot targets"}]},{id:"timeline",code:"03",label:"Timeline",title:"Edit the clip like an editor, not a prompt.",body:"Trim, splice, blend tracks, refine IK on the avatar, then bake. Preview in the browser before you export.",lines:[{k:"Edit",v:"Frame-accurate timeline"},{k:"IK",v:"Hands, feet, body \u2014 then bake"},{k:"Blend",v:"Multi-track composition"}]},{id:"character",code:"04",label:"Character",title:"Your figure. Our motion.",body:"Bring a GLB/FBX from Blender, Maya, Meshy, Tripo. Retarget maps the clip onto your rig \u2014 Creator and Pro, no extra credits.",lines:[{k:"In",v:"GLB / FBX, generative or DCC"},{k:"Map",v:"Automatic rig retarget"},{k:"Plan",v:"Creator + Pro"}]},{id:"api",code:"05",label:"API",title:"Same generate call, from an agent.",body:"Pose from image, generate, poll, export. Bearer token, async jobs. Same credit meter as the studio \u2014 no subscription required.",lines:[{k:"Auth",v:"Bearer key"},{k:"Mode",v:"Sync or async job"},{k:"Need",v:"Account + credits"}]},{id:"export",code:"06",label:"Export",title:"Preview, then ship the file.",body:"GLB for the web and engines. FBX into the cut or the DCC. Download after you have seen the shot hold.",lines:[{k:"GLB",v:"Web, Three, real-time"},{k:"FBX",v:"Unity, Unreal, Maya, Blender"},{k:"BVH",v:"Motion data interchange"}]}
1],o=[{id:"waypoints",code:"WP",label:"Waypoints",title:"Pin where the character is at a given frame.",body:"Click the studio floor to drop a mark on the timeline \u2014 stops, turns, plant positions. The prompt still drives how they get there.",lines:[{k:"Place",v:"Click the stage"},{k:"When",v:"Tied to a timeline frame"},{k:"Use",v:"Hits, plants, staging"}]},{id:"paths",code:"RT",label:"Paths",title:"Draw the route. Keep the style in the prompt.",body:"Sketch a spline on the ground. The character follows it while language drives gait, attitude, and action.",lines:[{k:"Draw",v:"Spline on the floor"},{k:"Follow",v:"Root travel locked to path"},{k:"Style",v:"Still comes from the prompt"}]},{id:"pose",code:"PK",label:"Pose keys",title:"Lock a full-body pose, then generate through it.",body:"Author with the additive rig, or pose from a photo. Ghosts sit on the timeline so you can see every saved posture.",lines:[{k:"From",v:"Photo or on-rig authoring"},{k:"Hold",v:"Full body at a frame"},{k:"See",v:"Ghost preview on the timeline"}]},{id:"effectors",code:"IK",label:"Hands / feet",title:"End effectors, independently keyed.",body:"Left/right hands and feet as targets \u2014 grabs, steps, reaches, grounded contact \u2014 without abandoning the prompt.",lines:[{k:"Targets",v:"L/R hand, L/R foot"},{k:"For",v:"Grabs, steps, contact"},{k:"With",v:"Prompt still driving the rest"}]},{id:"auto",code:"AU",label:"Auto",title:"Constraints switch the generator. No mode hunt.",body:"Write the prompt as usual. Add a waypoint, path, or pose key and generation uses directed motion automatically.",lines:[{k:"Switch",v:"None \u2014 constraints activate it"},{k:"Mix",v:"Text + space in one generate"},{k:"Meter",v:"Same credits as prompt-only"}]}],a=[{id:"timeline",code:"TL",label:"Timeline",title:"Frame-accurate edit after generate.",body:"Drag, trim, splice. Layer upper and lower body. AI-assisted transitions between clips, live preview on the stage.",lines:[{k:"Cut",v:"Trim and splice"},{k:"Layer",v:"Multi-track blend"},{k:"See",v:"Realtime 3D preview"}]},{id:"ikbake",code:"IK",label:"IK bake",title:"Refine on the avatar, then bake the clip.",body:"Additive IK, hand shaping, keyframes on the wooden figure. One-click bake into a playable export.",lines:[{k:"Edit",v:"Hands, feet, body on-rig"},{k:"Keys",v:"Additive IK keyframes"},{k:"Bake",v:"Into the export clip"}]},{id:"retarget",code:"RT",label:"Retarget",title:"Motion onto your character.",body:"Import from Meshy, Tripo, Blender, Maya, 3ds Max. The retargeter maps bones. Creator and Pro \u2014 no extra credit tax.",lines:[{k:"In",v:"GLB / FBX"},{k:"Map",v:"Automatic rig mapping"},{k:"Plan",v:"Creator + Pro"}]},{id:"formats",code:"IO",label:"Formats",title:"Files the rest of the pipeline already speaks.",body:"GLB for web and real-time. FBX for engines and DCC. BVH when you need motion-capture interchange.",lines:[{k:"GLB",v:"Three, R3F, WebGL"},{k:"FBX",v:"Unity, Unreal, Maya, Blender"},{k:"BVH",v:"Mocap interchange"}]},{id:"next",code:"NX",label:"Next",title:"On the bench.",body:"Style transfer onto existing clips, multi-character interaction, and realtime motion editing with assistance.",lines:[{k:"Style",v:"In development"},{k:"Crowd",v:"In development"},{k:"Live edit",v:"In development"}],status:"WIP"}],i=[{id:"rest",code:"POST",label:"Generate",title:"One call for the same motion the editor makes.",body:"REST, Bearer token, structured errors. Pose-from-image, generate-motion, poll, download.",lines:[{k:"Auth",v:"Bearer MMAI_KEY"},{k:"Length",v:"2\u201310 seconds"},{k:"Guide",v:"Scale 3\u201320, seed, constraints"}]},{id:"async",code:"JOB",label:"Jobs",title:"Long generates do not block the agent.",body:"Sync when it is short. Async with status polling when it is not. Request IDs on every call.",lines:[{k:"Sync",v:"Short clips, wait"},{k:"Async",v:"Job id + poll"},{k:"Trace",v:"Request ID on every call"}]},{id:"i18n",code:"LANG",label:"Language",title:"Prompt in the language you already write.",body:"Built-in translation for Arabic, Spanish, French, German, Portuguese, Russian, Chinese, Japanese.",lines:[{k:"In",v:"8 languages + English"},{k:"Where",v:"Same generate endpoint"},{k:"Meter",v:"Same credits"}]},{id:"meter",code:"CR",label:"Meter",title:"Credits, not seats.",body:"Studio and API spend the same pool. Account + credits \u2014 no subscription, no per-agent license.",lines:[{k:"Bill",v:"Credits per generate"},{k:"Share",v:"Editor + API"},{k:"Need",v:"No plan required"}]}],s=[{id:"film",code:"CINE",label:"Film",title:"The character has to plant on a mark.",body:"Instead of a mocap volume or a week of keys: pose from a still, drop a waypoint, generate the shot, FBX into the cut.",lines:[{k:"Need",v:"Performance on a mark"},{k:"Instead",v:"Volume day or hand keys"},{k:"Out",v:"FBX in the edit"},{k:"For",v:"Fights, plants, close-ups, crowds"}]},{id:"game",code:"LVL",label:"Games",title:"An NPC has to take this exact path.",body:"Instead of a locomotion graph you do not have time to author: draw the route, prompt the style, preview, FBX into the engine.",lines:[{k:"Need",v:"Scripted path + pose hits"},{k:"Instead",v:"Graph you will not ship"},{k:"Out",v:"FBX in Unity / Unreal"},{k:"For",v:"NPC travel, combat, contextual motion"}]},{id:"content",code:"DROP",label:"Content",title:"A clip that has to match the idea, today.",body:"Prompt the action, direct the beat if it has to land, export GLB for the web cut. No mocap day for a reaction or a brand beat.",lines:[{k:"Need",v:"Shot that matches the brief"},{k:"Instead",v:"Stock or a rigger you cannot book"},{k:"Out",v:"GLB / FBX the same day"},{k:"For",v:"Spots, mascots, social, explainers"}]},{id:"sim",code:"SIM",label:"Worlds",title:"A figure that has to behave in a space.",body:"Training sims, event hosts, interactive NPCs \u2014 path and pose so the body is where the world expects it.",lines:[{k:"Need",v:"Presence in a volume"},{k:"Instead",v:"Generic idle loops"},{k:"Out",v:"Directed clip + API refresh"},{k:"For",v:"Training, events, VR hosts"}]},{id:"pipe",code:"PIPE",label:"Pipeline",title:"Motion at volume, from a call.",body:"Instead of a seat for every agent: POST generate-motion, poll the job, signed clip URL. Credits only \u2014 no subscription.",lines:[{k:"Need",v:"Volume without seats"}
1,{k:"Instead",v:"A different stack in prod"},{k:"Out",v:"Signed clip URL"},{k:"For",v:"Agents, batch, tools"}]}],l=[{name:"Starter Magic",short:"Starter",price:"$3",annual:"$2.49",hasTrial:!0,for:"Prompt and directed shots on one character.",trial:"7 days \xb7 30 credits \xb7 card required",bullets:["300 credits / month","GLB, FBX, BVH export","API + agents (credits)"],features:["300 credits / month","GLB, FBX, BVH export","Rigged character animations","IK pose editing & bake","API + agents (credits)","Motion Momentum bonus credits","Cancel anytime"]},{name:"Creator Magic",short:"Creator",price:"$10",annual:"$8.33",popular:!0,hasTrial:!0,for:"Timeline and your character.",trial:"7 days \xb7 30 credits \xb7 card required",bullets:["1,000 credits / month","Your character + retarget","Timeline editor"],features:["1,000 credits / month","GLB, FBX, BVH export","Bring your own character + retarget","Timeline editor","IK pose editing & bake","Priority support","Motion Momentum bonus credits"]},{name:"Pro Magic",short:"Pro",price:"$99",annual:"$82.50",for:"Volume, plus a commercial license.",trial:"Commercial from day one",bullets:["10,000 credits / month","Commercial license","Timeline editor","Experimental features"],features:["10,000 credits / month","Commercial license","GLB, FBX, BVH export","Bring your own character + retarget","Timeline editor","IK pose editing & bake","Experimental features","Priority support","Motion Momentum bonus credits"]}],c=[{label:"Credits / mo",values:["300","1,000","10,000"]},{label:"GLB + FBX + BVH",values:["Yes","Yes","Yes"]},{label:"Your character",values:["\u2014","Yes","Yes"]},{label:"Timeline",values:["\u2014","Yes","Yes"]},{label:"IK bake",values:["Yes","Yes","Yes"]},{label:"API + agents",values:["Credits","Credits","Credits"]},{label:"Commercial",values:["\u2014","\u2014","Yes"]},{label:"Trial",values:["7d / 30 cr","7d / 30 cr","\u2014"]}];l.map((function(e,t){return{id:e.name,code:e.price,label:e.short,title:e.for,body:e.trial,lines:e.features.slice(0,6).map((function(e,t){return{k:String(t+1).padStart(2,"0"),v:e}})),status:e.popular?"start":2===t?"studio":void 0}}))}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.