1"use strict";(globalThis.webpackChunk_cartwhl_docs=globalThis.webpackChunk_cartwhl_docs||[]).push([[4007],{3220(e,t,n){n.r(t),n.d(t,{DemoCard:()=>h,assets:()=>d,contentTitle:()=>c,default:()=>p,frontMatter:()=>l,metadata:()=>o,toc:()=>m});var o=n(4712),r=n(1085),i=n(1184),a=n(6279),s=n(8016);const l={title:"Introducing Cartwheel, now in private beta",date:"2024-06-05",authors:["jarvis","andrew"]},c="Introducing Cartwheel, now in private beta",d={authorsImageUrls:[void 0,void 0]};function h({url:e,media:t}){return(0,r.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,r.jsx)(a.A,{to:e,className:"bg-gray-30 hover:shadow-menu aspect-[77/60] w-full rounded-2xl transition-shadow",children:t&&(0,r.jsx)(s.A,{src:t.src,className:"h-full w-full rounded-[inherit] object-cover",mode:"autoplay"})}),(0,r.jsx)("div",{className:"flex items-center gap-3 pb-4",children:(0,r.jsx)("div",{className:"whitespace-nowrap",children:(0,r.jsx)("span",{className:"text-sm font-medium tracking-tight",children:t?.prompt})})})]})}const m=[{value:"Background story",id:"background-story",level:2},{value:"A powerful animation platform",id:"a-powerful-animation-platform",level:2},{value:"Our motion model",id:"our-motion-model",level:2},{value:"A few demos",id:"a-few-demos",level:2}];function u(e){const t={a:"a",h2:"h2",p:"p",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.p,{children:"Hello world, it's really great to meet you \u2014 welcome to Cartwheel! \ud83e\udd38\u200d\u2642\ufe0f"}),"\n",(0,r.jsx)(t.p,{children:"We are absolutely thrilled to be launching and sharing with you what we've been up to. It's a big moment for us, and we hope it's also about to be a big moment for a lot of creative people."}),"\n",(0,r.jsx)(t.p,{children:"Allow us to introduce you to Cartwheel."}),"\n","\n",(0,r.jsxs)("div",{className:"mx-auto max-w-[848px]",children:[(0,r.jsx)(a.A,{className:"font-display transition-color mx-auto max-w-[848px] font-bold leading-tight text-green-50 no-underline hover:text-[#65F157]",to:"https://getcartwheel.com/beta-signup",children:(0,r.jsx)(t.p,{children:"TLDR, just take me to the waitlist"})}),(0,r.jsx)(s.A,{className:"mx-auto my-6 max-w-[848px] md:my-14",src:"https://resources.getcartwheel.com/share/demo-videos/hello-world.mp4",mode:"autoplay"}),(0,r.jsx)(t.p,{children:"We're building a generative animation tool that allows you to animate 3D characters just typing what you want them to do. This is a huge change from today's tools, which are extremely labor intensive, difficult to learn, and revision heavy, making 3D animation very expensive, and preventing most people from ever considering it."}),(0,r.jsx)("br",{}),(0,r.jsx)(t.p,{children:"Our mission is to help you tell stories faster, more creatively, and in ways you\nhadn't thought possible. We want to make way for a new kind of creative world,\nwhere anyone can animate their wildest dreams, then tweak them 'til they're just\nright (we're very focused on editability \u2014 like giving you a fully IK rigged\nMaya file of your motion)."}),(0,r.jsx)("br",{}),(0,r.jsx)(t.p,{children:"Animation is one of the most universal forms of storytelling to watch and\nexperience \u2014 but the tools to make it, not so much. We want every creative\nperson to have access to animation tools to express their ideas without needing\na Hollywood budget."}),(0,r.jsx)("br",{}),(0,r.jsxs)(t.p,{children:["To achieve this, we've trained an artificial intelligence model that pretty\nspectacularly and deeply understands motion. We'll talk a bit about our motion\nmodel shortly \u2014 or ",(0,r.jsx)(t.a,{href:"#our-motion-model",children:"scroll down there"}),", we won't be offended."]}),(0,r.jsx)("br",{}),(0,r.jsx)(t.p,{children:"In March, we started to preview Cartwheel to a limited number of trusted\ncreatives to explore the technology and help us decide how we can improve it \u2014\nand we can't wait to share those results with you now."}),(0,r.jsx)("br",{}
1),(0,r.jsx)(t.h2,{id:"background-story",children:"Background story"}),(0,r.jsx)("br",{}),(0,r.jsx)(t.p,{children:"So what inspired this? Pretty magically, Jonathan and Andrew separately had the\nsame idea prior to meeting each other. We happened to independently share it\nwith common friends at OpenAI, who then put us in touch when they realized we\nwere saying the same thing."}),(0,r.jsx)("br",{}),(0,r.jsx)(t.p,{children:"Jonathan comes from the creative world. He's created viral animations, designed\nproducts at and rebranded Google, and led a U.S. presidential campaign's\nadvertising."}),(0,r.jsx)("br",{}),(0,r.jsx)(t.p,{children:"Andrew comes from a mathematical science background, working at OpenAI, Google\nBrain, and authoring a viral Machine Learning book."}),(0,r.jsx)("br",{}),(0,r.jsx)(t.p,{children:"Through different lenses and experiences, here's what we have realized \u2014"}),(0,r.jsx)("br",{}),(0,r.jsx)(t.p,{children:"The barrier to entry into the craft of animation hasn't lowered significantly\nover the past twenty years. Creating high-quality animation is still heavily\ndependent on investments of time, skill, and budget. This is definitely true of\n2D animation, and exceedingly true of 3D animation."}),(0,r.jsx)("br",{}),(0,r.jsx)(t.p,{children:"We hope to lift the barrier for all creative people interested in using\nanimation to tell stories. We'd like to create a change in not only how you\ncraft animation, but also who can craft animation."}),(0,r.jsx)("br",{}),(0,r.jsx)(t.h2,{id:"a-powerful-animation-platform",children:"A powerful animation platform"}),(0,r.jsx)("br",{}),(0,r.jsx)(t.p,{children:"Our model synthesizes motion on actual, editable 3D assets \u2014 not a bunch of uneditable pixels. Cartwheel allows anyone to create quickly and easily, and animators and creative professionals to significantly accelerate their creative workflows. This means you can pull Cartwheel motions into your own pipelines, take on bigger and more ambitious projects, and animate more!"}),(0,r.jsx)("br",{}),(0,r.jsx)(t.p,{children:"Since 3D animation is foundational to so many creative disciplines, we expect to see Cartwheel used for a vast range of creative projects. Some examples:"}),(0,r.jsx)("br",{}),(0,r.jsxs)("ul",{className:"list-disc pl-10",children:[(0,r.jsx)("li",{children:"3D game development"}),(0,r.jsx)("li",{children:"Virtual Reality and Augmented Reality experiences"}),(0,r.jsx)("li",{children:"Narrative film"}),(0,r.jsx)("li",{children:"Music videos"}),(0,r.jsx)("li",{children:"Social media content"}),(0,r.jsx)("li",{children:"Memes"}),(0,r.jsx)("li",{children:"Presentations"}),(0,r.jsx)("li",{children:"Ads"}),(0,r.jsx)("li",{children:"Digital avatars"}),(0,r.jsx)("li",{children:"And beyond"})]}),(0,r.jsx)("br",{}),(0,r.jsx)(t.p,{children:"Once you animate your characters with Cartwheel, you have the option to export them as 3D files into a game engine or a 3D tool of your choice like Unity, Unreal Engine, Maya, Blender, or others. Spend your time play-testing, designing, or building \u2014 let us help you with the motion."}),(0,r.jsx)("br",{}),(0,r.jsx)(t.p,{children:"You can also make a video with the press of a button. Change the background, add text with customizable typography, swap characters, adjust the camera, playback speed, aspect ratio, and we have lots more on the way. It's early days for us, but we think it's pretty cool."}),(0,r.jsx)("br",{}),(0,r.jsx)(t.h2,{id:"our-motion-model",children:"Our motion model"}),(0,r.jsx)("br",{}),(0,r.jsx)(t.p,{children:"We are trying to combine the best of traditional animation technology like\nkeyframing, curve editing, IK, blending, and motion warping with modern deep\nlearning techniques like transformers and diffusion models."}),(0,r.jsx)("br",{}),(0,r.jsx)(t.p,{children:"To that end, we've trained a deep learning model on high quality human motion."}),(0,r.jsx)("br",{}),(0,r.jsx)(t.p,{children:"This model is conditioned on text embeddings and generates motion in a discrete\nlatent space. This combination of high quality motion and state of the art\nlatent motion synthesis helps you to create unique, realistic human motion with\njust a few words."}),(0,r.jsx)("br",{}),(0,r.jsx)(t.h2,{id:"a-few-demos",children:"A few demos"}),(0,r.jsx)("br",{}),(0,r.jsx)(t.p,{children:"Here are a few demos directly from the platform along with their prompts:"}),(0,r.jsxs)("div",{className:"mx-auto grid max-w-[848px] grid-cols-2 gap-4 pt-4",children:[(0,r.jsx)(h,{url:"https://studio.getcartwheel.com/home?jobID=mogen-job-01HZG0W6GM4P779QQSANAPKDAP&animationNumber=10",media:{prompt:"Cartwheel",src:"https://resources.getcartwheel.com/share/mogen-job-01HZG0W6GM4P779QQSANAPKDAP/basic_10.mp4"}}),(0,r.jsx)(h,{url:"https://studio.getcartwheel.com/home?jobID=mogen-job-01HZ8FFGTFPSN0XK9PC8V4SD34&animationNumber=3",media:{prompt:"Karate kata",src:"https://resources.getcartwheel.com/share/mogen-job-01HZ8FFGTFPSN0XK9PC8V4SD34/basic_3.mp4"}}),(0,r.jsx)(h,{url:"https://studio.getcartwheel.com/home?jobID=mogen-job-01HXF56NW5RB0XV7E6DAMEYHJM&animationNumber=1",media:{prompt:"Soccer kick",src:"https://resources.getcartwheel.com/share/mogen-job-01HXF56NW5RB0XV7E6DAMEYHJM/basic_1.mp4"}}),(0,r.jsx)(h,{url:"https://studio.getcartwheel.com/home?jobID=mogen-job-01HZ0VQ2T5AF1V54C9Q94J5QB6&animationNumber=3",media:{prompt:"Sit legs crossed",src:"https://resources.getcartwheel.com/share/mogen-job-01HZ0VQ2T5AF1V54C9Q94J5QB6/basic_3.mp4"}}),(0,r.jsx)(h,{url:"https://studio.getcartwheel.com/home?jobID=mogen-job-01HZ52C67WSMRW4MH2ADWWYBJ6&animationNumber=1",media:{prompt:"Laugh hysterically",src:"https://resources.getcartwheel.com/share/mogen-job-01HZ52C67WSMRW4MH2ADWWYBJ6/basic_1.mp4"}}),(0,r.jsx)(h,{url:"https://studio.getcartwheel.com/home?jobID=mogen-job-01HWXCG38YFJDQK2MQHKJCH54S&animationNumber=2",media:{prompt:"Salsa dance",src:"https://resources.getcartwheel.com/share/mogen-job-01HWXCG38YFJDQK2MQHKJCH54S/basic_2.mp4"}}
1)]}),(0,r.jsx)(t.p,{children:"Cartwheel is just getting started and as we're sure you can tell, we're thrilled about the infinite creative potential. We plan to push regular model updates and implement the lessons from the private beta to continue improving the experience. We're excited to share our progress along the way and will gradually invite more people into the beta so you can experience it firsthand."}),(0,r.jsx)("br",{}),(0,r.jsx)(t.p,{children:"If you're interested in trying Cartwheel, we invite you to sign up for the\nwaitlist"}),(0,r.jsx)(a.A,{className:"text-green-50",to:"https://getcartwheel.com/beta-signup",children:(0,r.jsx)(t.p,{children:"here"})}),(0,r.jsx)(t.p,{children:"and follow along on"}),(0,r.jsx)(a.A,{className:"text-green-50",to:"https://twitter.com/getcartwheel",children:(0,r.jsx)(t.p,{children:"Twitter"})}),(0,r.jsx)(t.p,{children:","}),(0,r.jsx)(a.A,{className:"text-green-50",to:"https://www.tiktok.com/@getcartwheel",children:(0,r.jsx)(t.p,{children:"TikTok"})}),(0,r.jsx)(t.p,{children:","}),(0,r.jsx)(a.A,{className:"text-green-50",to:"https://instagram.com/getcartwheel",children:(0,r.jsx)(t.p,{children:"Instagram"})}),(0,r.jsx)(t.p,{children:", and"}),(0,r.jsx)(a.A,{className:"text-green-50",to:"https://www.youtube.com/channel/UCM5OUtXrNjQsaxvOTe3GQcw",children:(0,r.jsx)(t.p,{children:"YouTube"})}),(0,r.jsxs)(t.p,{children:[". We can't wait to meet you, and for you to meet Cartwheel.\n",(0,r.jsx)("br",{}),"\u2014 Andrew and Jonathan"]})]})]})}function p(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(u,{...e})}):u(e)}},8016(e,t,n){n.d(t,{A:()=>u});var o=n(4041),r=Object.defineProperty,i=(e,t,n)=>((e,t,n)=>t in e?r(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n),a=new Map,s=new WeakMap,l=0,c=void 0;function d(e){return Object.keys(e).sort().filter((t=>void 0!==e[t])).map((t=>{return`${t}_${"root"===t?(n=e.root,n?(s.has(n)||(l+=1,s.set(n,l.toString())),s.get(n)):"0"):e[t]}`;var n})).toString()}function h(e,t,n={},o=c){if(void 0===window.IntersectionObserver&&void 0!==o){const r=e.getBoundingClientRect();return t(o,{isIntersecting:o,target:e,intersectionRatio:"number"==typeof n.threshold?n.threshold:0,time:0,boundingClientRect:r,intersectionRect:r,rootBounds:r}),()=>{}}const{id:r,observer:i,elements:s}=function(e){const t=d(e);let n=a.get(t);if(!n){const o=new Map;let r;const i=new IntersectionObserver((t=>{t.forEach((t=>{var n;const i=t.isIntersecting&&r.some((e=>t.intersectionRatio>=e));e.trackVisibility&&void 0===t.isVisible&&(t.isVisible=i),null==(n=o.get(t.target))||n.forEach((e=>{e(i,t)}))}))}),e);r=i.thresholds||(Array.isArray(e.threshold)?e.threshold:[e.threshold||0]),n={id:t,observer:i,elements:o},a.set(t,n)}return n}(n),l=s.get(e)||[];return s.has(e)||s.set(e,l),l.push(t),i.observe(e),function(){l.splice(l.indexOf(t),1),0===l.length&&(s.delete(e),i.unobserve(e)),0===s.size&&(i.disconnect(),a.delete(r))}}o.Component;var m=n(1085);function u({src:e,className:t,mode:n,onLoadedData:r,onError:i,children:a,contained:s=!1,style:l}){const c=(0,o.useRef)(null),{ref:d,inView:u}=function({threshold:e,delay:t,trackVisibility:n,rootMargin:r,root:i,triggerOnce:a,skip:s,initialInView:l,fallbackInView:c,onChange:d}={}){var m;const[u,p]=o.useState(null),w=o.useRef(d),[g,x]=o.useState({inView:!!l,entry:void 0});w.current=d,o.useEffect((()=>{if(s||!u)return;let o;return o=h(u,((e,t)=>{x({inView:e,entry:t}),w.current&&w.current(e,t),t.isIntersecting&&a&&o&&(o(),o=void 0)}),{root:i,rootMargin:r,threshold:e,trackVisibility:n,delay:t},c),()=>{o&&o()}}),[Array.isArray(e)?e.toString():e,u,i,r,a,s,n,c,t]);const b=null==(m=g.entry)?void 0:m.target,y=o.useRef(void 0);u||!b||a||s||y.current===b||(y.current=b,x({inView:!!l,entry:void 0}));const j=[p,g.inView,g.entry];return j.ref=j[0],j.inView=j[1],j.entry=j[2],j}({threshold:[.5],skip:"autoplay"!==n});return(0,o.useEffect)((()=>{"autoplay"===n&&(u?c.current?.play():c.current?.pause())}),[u,n]),(0,m.jsx)("div",{ref:d,className:t,style:l,children:(0,m.jsx)("video",{ref:c,onMouseEnter:()=>{"hover"===n&&c.current?.play()},onMouseLeave:()=>{"hover"===n&&c.current?.pause()},src:e,crossOrigin:"use-credentials",className:"h-full w-full rounded-[inherit] object-"+(s?"contain":"cover"),muted:!0,playsInl
1ine:!0,loop:!0,autoPlay:"autoplay"===n,onContextMenu:e=>e.preventDefault(),onLoadedData:()=>r?.(),onError:()=>i?.(),children:a})})}},1184(e,t,n){n.d(t,{R:()=>a,x:()=>s});var o=n(4041);const r={},i=o.createContext(r);function a(e){const t=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),o.createElement(i.Provider,{value:t},e.children)}},4712(e){e.exports=JSON.parse('{"permalink":"/blog/2024/06/05/introducing-cartwheel","source":"@site/blog/2024-06-05-introducing-cartwheel.mdx","title":"Introducing Cartwheel, now in private beta","description":"Hello world, it\'s really great to meet you \u2014 welcome to Cartwheel! \ud83e\udd38\u200d\u2642\ufe0f","date":"2024-06-05T00:00:00.000Z","tags":[],"readingTime":5.65,"hasTruncateMarker":true,"authors":[{"name":"Jonathan Jarvis","title":"Co-founder & CEO","url":"https://www.linkedin.com/in/jonathanjarvis/","page":{"permalink":"/blog/authors/jarvis"},"socials":{"x":"https://x.com/jonathanjarvis","linkedin":"https://www.linkedin.com/in/jonathanjarvis/"},"imageURL":"https://getcartwheel.com/images/company/Jarvis.webp","key":"jarvis"},{"name":"Andrew Carr","title":"Co-founder & Chief Scientist","url":"https://www.linkedin.com/in/andrewnc/","page":{"permalink":"/blog/authors/andrew"},"socials":{"x":"https://x.com/andrew_n_carr","linkedin":"https://www.linkedin.com/in/andrewnc/","github":"https://github.com/andrewnc"},"imageURL":"https://getcartwheel.com/images/company/Andrew.webp","key":"andrew"}],"frontMatter":{"title":"Introducing Cartwheel, now in private beta","date":"2024-06-05","authors":["jarvis","andrew"]},"unlisted":false}')}}]);
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.