<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Denis on Medium]]></title>
        <description><![CDATA[Stories by Denis on Medium]]></description>
        <link>https://medium.com/@hyde46?source=rss-46a6e6b891db------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*6dxkDG_SmBCyAuhIZ9g1jw.png</url>
            <title>Stories by Denis on Medium</title>
            <link>https://medium.com/@hyde46?source=rss-46a6e6b891db------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Mon, 25 May 2026 22:04:11 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@hyde46/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Measurements Meet Imagination: Creating accurate 3D Avatars with Meshcapade’s API]]></title>
            <link>https://medium.com/meshcapade/measurements-meet-imagination-creating-accurate-3d-avatars-with-meshcapades-api-9a6ec5029793?source=rss-46a6e6b891db------2</link>
            <guid isPermaLink="false">https://medium.com/p/9a6ec5029793</guid>
            <category><![CDATA[api]]></category>
            <category><![CDATA[measurement]]></category>
            <category><![CDATA[avatar]]></category>
            <category><![CDATA[digital-human]]></category>
            <dc:creator><![CDATA[Denis]]></dc:creator>
            <pubDate>Tue, 06 Jun 2023 13:20:50 GMT</pubDate>
            <atom:updated>2023-09-11T08:23:26.502Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*lLuo0rcP5gStpZNzh8s3IA.jpeg" /><figcaption>Avatars created from measurements in motion</figcaption></figure><p>Measuring humans is <em>hard</em>. We’re not talking about measuring strength or endurance here, but about accurately sizing up folks in all our glorious variety of shapes and sizes. And for every body type, there’s a different opinion on how to measure it accurately. The complexity escalates when considering the fluid dynamics of human movement. Our bodies are not static, but constantly morphing entities — we twist, contort, and elongate various parts, adding layers of ambiguity to the measurement challenge.</p><p>Despite these difficulties, it’s crucial to have a standardized reference point for measurements, particularly in the realm of technological design. This is where the <a href="https://www.iso.org/standard/65246.html">ISO 7250–1:2017</a> standard becomes an invaluable resource. By adhering to this internationally accepted guide for basic human body measurements, we can maintain consistency, improve accuracy, and advance our understanding of the human form in its myriad manifestations.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/600/1*_exleyotUxOAwmlRo2M_FQ.gif" /><figcaption>Avatar from measurements on me.meshcapade.com</figcaption></figure><p>Starting from one or more measurements, the Meshcapade avatar creator utilizes these inputs to extrapolate the remaining body dimensions. This customization process ensures that your avatar closely mirrors your real-life proportions, resulting in a highly personalized and lifelike representation. Creating avatars from measurements on <a href="https://me.meshcapade.com/from-measurements">Meshcapade</a> is also possible through the <a href="https://meshcapade.com/docs/api#post-/avatars/create/from-measurements">API</a>.</p><h3>Creating an avatar from measurements</h3><p>With only one single measurement you can already create an avatar from measurements. It’s as straight forward as:</p><pre>curl --location &#39;https://api.meshcapade.com/api/v1/avatars/create/from-measurements&#39; \<br>--header &#39;Content-Type: application/json&#39; \<br>--header &quot;Authorization: Bearer $TOKEN&quot; \<br>--data &#39;{<br>    &quot;name&quot;: &quot;Created from measurements API&quot;,<br>    &quot;gender&quot;:&quot;female&quot;,<br>    &quot;measurements&quot;:{<br>                        &quot;Height&quot;: 180.1<br>                    }<br>}&#39;</pre><blockquote>Note: See the <a href="https://medium.com/meshcapade/streamline-avatar-creation-with-meshcapade-me-api-from-one-image-to-an-accurate-avatar-in-seconds-b8ca4f15b9a8">Avatar from images</a> article about creating an account and authenticating your requests and how to set the $TOKEN</blockquote><p>Breaking down the request we have a couple of components to look at.</p><pre>&#39;curl [...]/avatars/create/from-measurement`</pre><p>Is one of several API endpoints to create avatars from many different sources. In this case from measurements, as the name suggests. Check out the <a href="https://meshcapade.com/docs/api#overview">docs</a> for more options!</p><pre>&#39;{<br>    &quot;name&quot;: &quot;Created from measurements API&quot;,<br>    &quot;gender&quot;:&quot;female&quot;,<br>    &quot;measurements&quot;:{<br>                        &quot;Height&quot;: 180.1<br>                    }<br>}&#39;</pre><p>The body of the request contains the name of the avatar we want to create, the gender which is either female or male and finally the measurements.</p><p>For a comprehensive list of all available measurement points to utilize, please refer to our <a href="https://meshcapade.notion.site/Meshcapade-Me-Support-1bfab171ac8440139090abeb4f7ec95c#8fcb1d0c2de748d8bc02d19632cb70e3">Notion document</a>. Please note that the measurements provided are in centimeters. If any measurements are currently in imperial units, they will need to be converted to metric before running the request.</p><p>The somewhat shortened response to the request looks somewhat close to the following:</p><pre>{<br>    &quot;data&quot;: {<br>        &quot;type&quot;: &quot;asset&quot;,<br>        &quot;id&quot;: &quot;bbab51d3-b6bc-4484-94f0-d01a506eedb3&quot;,<br>        &quot;attributes&quot;: {<br>            &quot;metadata&quot;: {<br>                &quot;bodyShape&quot;: {<br>                    &quot;gender&quot;: &quot;FEMALE&quot;,<br>                    &quot;modelVersion&quot;: &quot;SMPLX&quot;,<br>                    &quot;shapeParameters&quot;: null<br>                }<br>            },<br>            &quot;name&quot;: &quot;Created from measurements API&quot;,<br>            &quot;origin&quot;: &quot;FROM_MEASUREMENTS&quot;,<br>            &quot;state&quot;: &quot;AWAITING_PROCESSING&quot;,<br>        }, <br>        &quot;links&quot;: {<br>            &quot;self&quot;: &quot;https://api.meshcapade.com/api/v1/avatars/bbab51d3-b6bc-4484-94f0-d01a506eedb3&quot;<br>        }<br>    }<br>}</pre><p>Seeing the “state”: “AWAITING_PROCESSING” tells us that we succesfully requested the creation of our avatar. Usually it takes only a couple of seconds until the avatar is ready.</p><h3><strong>Requesting the avatar</strong></h3><p>We can request the avatar simply by following the data[&quot;links&quot;][&quot;self&quot;] link, which points to the newly created avatar asset:</p><pre>curl --location &quot;https://api.meshcapade.com/api/v1/avatars/$AVATAR_ID&quot; <br>--header &quot;Authorization: Bearer $TOKEN&quot;</pre><p>If our avatar has already been processed, the response will look like this:</p><pre>{<br>    &quot;data&quot;: {<br>        &quot;type&quot;: &quot;asset&quot;,<br>        &quot;id&quot;: &quot;bbab51d3-b6bc-4484-94f0-d01a506eedb3&quot;,<br>        &quot;attributes&quot;: {<br>            &quot;created_at&quot;: 1685970096,<br>            &quot;metadata&quot;: {<br>                &quot;bodyShape&quot;: {<br>                    &quot;gender&quot;: &quot;FEMALE&quot;,<br>                    &quot;modelVersion&quot;: &quot;SMPLX&quot;,<br>                    &quot;shapeParameters&quot;: [<br>                        2.1875213361916543,<br>                        -0.26719294316046005,<br>                        &quot;lots of numbers here [...]&quot; <br>                        -0.07937182182457603<br>                    ]<br>                }<br>            },<br>            &quot;name&quot;: &quot;Created from measurements API&quot;,<br>            &quot;origin&quot;: &quot;FROM_MEASUREMENTS&quot;,<br>            &quot;state&quot;: &quot;READY&quot;,<br>            &quot;type&quot;: &quot;AVATAR&quot;<br>        },<br>        &quot;links&quot;: {<br>            &quot;self&quot;: &quot;https://api.meshcapade.com/api/v1/avatars/bbab51d3-b6bc-4484-94f0-d01a506eedb3&quot;<br>        }<br>    }<br>}</pre><p>Don’t panic if the avatar is not READY yet, give it a couple more seconds and try again.</p><h3>Download your avatar</h3><p>Downloading your newly created avatar is as easy as creating it. Follow the “Download your avatar” section of our <a href="https://medium.com/meshcapade/streamline-avatar-creation-with-meshcapade-me-api-from-one-image-to-an-accurate-avatar-in-seconds-b8ca4f15b9a8">previous article</a> to easily create an obj or rigged fbx download.</p><p>You can also preview your avatar in the online <a href="https://me.meshcapade.com/vault">Avatar vault</a> and download them manually!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=9a6ec5029793" width="1" height="1" alt=""><hr><p><a href="https://medium.com/meshcapade/measurements-meet-imagination-creating-accurate-3d-avatars-with-meshcapades-api-9a6ec5029793">Measurements Meet Imagination: Creating accurate 3D Avatars with Meshcapade’s API</a> was originally published in <a href="https://medium.com/meshcapade">Meshcapade</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Streamline Avatar Creation with Meshcapade Me API: From One Image to an Accurate Avatar in Seconds]]></title>
            <link>https://medium.com/meshcapade/streamline-avatar-creation-with-meshcapade-me-api-from-one-image-to-an-accurate-avatar-in-seconds-b8ca4f15b9a8?source=rss-46a6e6b891db------2</link>
            <guid isPermaLink="false">https://medium.com/p/b8ca4f15b9a8</guid>
            <category><![CDATA[virtual-avatars]]></category>
            <category><![CDATA[digital-avatars]]></category>
            <category><![CDATA[virtual-reality]]></category>
            <dc:creator><![CDATA[Denis]]></dc:creator>
            <pubDate>Thu, 16 Mar 2023 15:49:59 GMT</pubDate>
            <atom:updated>2025-07-14T07:25:12.897Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/600/1*vS9D3QlrCBfZO4uZfJf9kQ.gif" /><figcaption>Avatar from a single image</figcaption></figure><p>The Meshcapade Me API is a RESTful API that allows you to create and edit avatars from images, measurements, scans, and more. All API replies adhere to the <a href="https://jsonapi.org/format/">JSON:API</a> schema guidelines. You can find detailed documentation for each endpoint <a href="https://meshcapade.com/docs/api">here</a>.</p><p>Step by step we will create an Avatar from a single image</p><h3>Meshcapade Me Account</h3><p>First we create an account on <a href="https://me.meshcapade.com/">me.meshcapade.com</a>. To make the authentication token retrieval a bit easier, sign up with an email adress instead of the SSO options.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*VGAzKOlDJqHPikQ60pYJfw.png" /><figcaption>Sign up</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*KWfKmDzwz9vuEkwMnKtWvw.png" /><figcaption>Create a new account</figcaption></figure><h3>New Avatar</h3><p>Avatars are the central piece in the API. Almost every operation is focused on interacting with an avatar in one way or another. To create an avatar from an image, we first have to get an access token with our new account.</p><pre>RESP=$(curl --location &#39;https://auth.meshcapade.com/realms/meshcapade-me/protocol/openid-connect/token&#39; \<br>--header &#39;Content-Type: application/x-www-form-urlencoded&#39; \<br>--data-urlencode &#39;grant_type=password&#39; \<br>--data-urlencode &#39;client_id=meshcapade-me&#39; \<br>--data-urlencode &#39;username=&lt;email&gt;&#39; \<br>--data-urlencode &#39;password=&lt;password&gt;&#39;)</pre><p>The reply looks like this:</p><pre>{<br>    &quot;access_token&quot;: &quot;&lt;token&gt;&quot;,<br>    &quot;expires_in&quot;: 36000,<br>    &quot;refresh_expires_in&quot;: 36000,<br>    &quot;refresh_token&quot;: &quot;&lt;refresh_token&gt;&quot;,<br>    &quot;token_type&quot;: &quot;Bearer&quot;,<br>    &quot;not-before-policy&quot;: 123123123,<br>    &quot;session_state&quot;: &quot;...&quot;,<br>    &quot;scope&quot;: &quot;email profile&quot;<br>}</pre><p>With <a href="https://stedolan.github.io/jq/">jq</a> we can read out the acces token like this:</p><pre>TOKEN=$(echo $RESP | jq &quot;.access_token&quot; -r)</pre><p>Next, we can initiate the <a href="https://meshcapade.com/docs/api#post-/avatars/create/from-images">avatar from images creation</a>. This request will prepare an empty avatar which will wait for us to upload an image before processing it.</p><p>Tip: You can upload up to 4 images from different angles to improve accuracy of the body. Talk to us to get this feature enabled on your account!</p><pre>curl --location --request POST &#39;api.meshcapade.com/api/v1/avatars/create/from-images&#39; \<br>--header &quot;Authorization: Bearer $TOKEN&quot;</pre><p>The reply contains a single asset of the type AVATAR in JSON:API spec. An avatar is described by its id and a bunch of attributes. This empty avatar is not too interesting yet. Some API responses may contain a collection of assets in the data field.</p><pre>{<br>    &quot;data&quot;: {<br>        &quot;type&quot;: &quot;asset&quot;,<br>        &quot;id&quot;: &quot;e40ba1bd-2675-48ba-bda4-8b714cd3e4a7&quot;,<br>        &quot;attributes&quot;: {<br>            &quot;metadata&quot;: {<br>                &quot;bodyShape&quot;: {<br>                    &quot;shapeParameters&quot;: null,<br>                    &quot;modelVersion&quot;: &quot;SMPLX&quot;,<br>                }<br>            },<br>            &quot;origin&quot;: &quot;&quot;,<br>            &quot;owner&quot;: &quot;&lt;your_user_id&gt;&quot;,<br>            &quot;source&quot;: &quot;GENERATED&quot;,<br>            &quot;source_build_id&quot;: &quot;&lt;some_id&gt;&quot;,<br>            &quot;state&quot;: &quot;PENDING_AFI&quot;,<br>            &quot;type&quot;: &quot;AVATAR&quot;<br>        },<br>        &quot;links&quot;: {<br>            &quot;image_upload&quot;: &quot;https://api.meshcapade.com/api/v1/avatars/e40ba1bd-2675-48ba-bda4-8b714cd3e4a7/images&quot;,<br>            &quot;self&quot;: &quot;https://api.meshcapade.com/api/v1/avatars/e40ba1bd-2675-48ba-bda4-8b714cd3e4a7&quot;<br>        }<br>    }<br>}</pre><p>In the data.links.image_upload field, we already get an url pointing us to an endpoint outlining how to upload our image. Further described <a href="https://meshcapade.com/docs/api#post-/avatars/-assetID-/images">here</a>.</p><p>Calling this endpoint informs the API that we have an intent to upload a file, and returns a presigned PUT url where we can upload the file to.</p><pre>curl --location --request POST &#39;api.meshcapade.com/api/v1/avatars/e40ba1bd-2675-48ba-bda4-8b714cd3e4a7/images&#39; \<br>--header &quot;Authorization: Bearer $TOKEN&quot;</pre><p>The reply contains another asset, this time of type IMAGE and looks like this:</p><pre>{<br>    &quot;data&quot;: {<br>        &quot;type&quot;: &quot;asset&quot;,<br>        &quot;id&quot;: &quot;5ac5991f-dd79-46f0-8de6-235475361363&quot;,<br>        &quot;attributes&quot;: {<br>            &lt;attributes&gt;<br>            &quot;url&quot;: {<br>                &quot;Link&quot;: &quot;&lt;presigned_PUT_url&gt;&quot;,<br>                &quot;Method&quot;: &quot;PUT&quot;,<br>                &quot;Internal&quot;: false<br>            }<br>        },<br>        &quot;links&quot;: {<br>            &quot;self&quot;: &quot;https://api.meshcapade.com/api/v1/images/5ac5991f-dd79-46f0-8de6-235475361363&quot;,<br>            &quot;upload&quot;: &quot;&lt;presigned_PUT_url&gt;&quot;<br>        }<br>    }<br>}</pre><p>We can upload the image using the data.links.upload url. This will automatically link the image to the empty avatar.</p><p>The uploaded image should be a full body shot with as much contrast as possible between the body itself and the background.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*3vtx8Je_FqPHPX31hMM9uQ.jpeg" /><figcaption>Ashley ballerina</figcaption></figure><pre>UPLOADURL=$(echo $RESP | jq &quot;.data.links.upload&quot; -r)<br><br>curl --upload-file &quot;ballerina_ashley.png&quot; \<br>      --header &quot;Content-Type: image/png&quot; \<br>      &quot;${UPLOADURL}&quot;</pre><h3>Start the creation process</h3><p>After having uploaded the image, we can <a href="https://meshcapade.com/docs/api#post-/avatars/-assetID-/fit-to-images">start the fitting process</a>. We need a couple more parameters. While most are optional, the more we use, the higher the accuracy of the resulting avatar.</p><p>Request body can include these parameters:</p><pre>{<br>    &quot;avatarname&quot;: &quot;Ashley&quot;, &lt;- Optional<br>    &quot;height&quot;:180, &lt;- Optional<br>    &quot;weight&quot;:65, &lt;- Optional<br>    &quot;gender&quot;:&quot;female&quot; &lt;-  female/male/neutral,<br>    &quot;imageMode&quot;: &quot;AFI2&quot; &lt;- AFI2/AFI<br>}</pre><p>About the imageMode</p><p>Instant mode (AFI2)</p><p>Use photos of people in dynamic poses and outfits. Results will focus more on poses than body shape.</p><p>Classic mode (AFI)</p><p>Ensure your input photo features tight-fitting clothing and a relaxed pose to achieve the best results.</p><p><a href="https://meshcapade.notion.site/Avatars-from-Images-dfa87f45f0fa45c393e026658db84a4c?pvs=25">What is the difference?</a></p><p>Running the request:</p><pre>curl --location &quot;api.meshcapade.com/api/v1/avatars/e40ba1bd-2675-48ba-bda4-8b714cd3e4a7/fit-to-images&quot; \<br>--header &quot;Authorization: Bearer $TOKEN&quot; \<br>--header &quot;Content-Type: application/json&quot; \<br>--data &#39;{<br>    &quot;avatarname&quot;: &quot;Ashley&quot;,<br>    &quot;height&quot;:180,<br>    &quot;weight&quot;:65,<br>    &quot;gender&quot;:&quot;female&quot;<br>}&#39;</pre><p>The reply will contain the same avatar asset as earlier, with the only difference being the state now in PROCESSING</p><pre>{<br>    &quot;data&quot;: {<br>        &quot;type&quot;: &quot;asset&quot;,<br>        &quot;id&quot;: &quot;e40ba1bd-2675-48ba-bda4-8b714cd3e4a7&quot;,<br>        &quot;attributes&quot;: {<br>            &quot;metadata&quot;: {<br>                &quot;bodyShape&quot;: {<br>                    &quot;shapeParameters&quot;: null,<br>                    &quot;modelVersion&quot;: &quot;SMPLX&quot;,<br>                }<br>            },<br>            &quot;origin&quot;: &quot;&quot;,<br>            &quot;owner&quot;: &quot;&lt;your_user_id&gt;&quot;,<br>            &quot;source&quot;: &quot;GENERATED&quot;,<br>            &quot;source_build_id&quot;: &quot;&lt;some_id&gt;&quot;,<br>            &quot;state&quot;: &quot;PROCESSING&quot;,<br>            &quot;type&quot;: &quot;AVATAR&quot;<br>        },<br>        &quot;links&quot;: {<br>            &quot;image_upload&quot;: &quot;https://api.meshcapade.com/api/v1/avatars/e40ba1bd-2675-48ba-bda4-8b714cd3e4a7/images&quot;,<br>            &quot;self&quot;: &quot;https://api.meshcapade.com/api/v1/avatars/e40ba1bd-2675-48ba-bda4-8b714cd3e4a7&quot;<br>        }<br>    }<br>}</pre><p>Now, we keep on requesting the same endpoint of data.links.self from the reply until the state is READY, which should roughly take a minute.<br>This should point at GET /assets/{assetID}. Then, you’ll also find big blob of floats in data.attributes.metadata.bodyShape.shapeParameters . Those are the shape parameters of the underlying <a href="https://staging.meshcapade.com/SMPL">SMPL</a> model.</p><p>You can always take a look at your avatars in your <a href="https://meshcapade.me/vault">vault</a></p><p>Or <a href="https://meshcapade.com/docs/api#get-/avatars">request all your owned avatars</a></p><h3>Download your avatar!</h3><p>Finally we can <a href="https://meshcapade.com/docs/api#post-/avatar/-assetID-/export">download your avatar</a>. This requires a simple export job. We can choose between a couple of poses, namely T , A and the same pose as in the image SCAN. At this time only obj export is supported, but a fully rigged fbx download will soon be added as well!</p><blockquote>Edit: fbx is now available too. Just change format:&quot;obj&quot; to format:&quot;fbx&quot; . Ceck out the <a href="https://meshcapade.com/docs/api#post-/avatar/-assetID-/export">documentation</a> if you want to have an animation applied to your rigged avatar</blockquote><p>Export request:</p><pre>curl --location &#39;api.meshcapade.com/api/v1/avatars/e40ba1bd-2675-48ba-bda4-8b714cd3e4a7/export&#39; \<br>--header &quot;Authorization: Bearer $TOKEN&quot; \<br>--header &#39;Content-Type: application/json&#39; \<br>--data &#39;{<br>    &quot;pose&quot;:&quot;scan&quot;,<br>    &quot;format&quot;:&quot;obj&quot;<br>}&#39;</pre><p>Similar to how we started the fitting process from earlier, we can keep on requesting the same endpoint with the same data body, until the returned mesh asset has aREADY state. Then, the url attribute of the asset will contain a direct download link to the resulting obj 🎉</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*1TY2ZgiOOhmkH2w4tqU7JQ.png" /><figcaption>Avatar imported in blender</figcaption></figure><p>Congratulations, you have created your own avatar from a single image!</p><p>Follow Meshcapade on <a href="https://twitter.com/meshcapade">twitter</a>, contact us <a href="https://share-eu1.hsforms.com/1xUsUyNYsQ7KP6Ta2LhLyRAf2qs7">here</a> or write an email at support@meshcapade.com</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=b8ca4f15b9a8" width="1" height="1" alt=""><hr><p><a href="https://medium.com/meshcapade/streamline-avatar-creation-with-meshcapade-me-api-from-one-image-to-an-accurate-avatar-in-seconds-b8ca4f15b9a8">Streamline Avatar Creation with Meshcapade Me API: From One Image to an Accurate Avatar in Seconds</a> was originally published in <a href="https://medium.com/meshcapade">Meshcapade</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>