From: "Nathan Shipley" Received: from mail-wm0-f52.google.com ([74.125.82.52] verified) by media-motion.tv (CommuniGate Pro SMTP 6.1.0) with ESMTPS id 6329019 for AE-List@media-motion.tv; Mon, 02 Oct 2017 21:25:00 +0200 Received: by mail-wm0-f52.google.com with SMTP id q132so12627111wmd.2 for ; Mon, 02 Oct 2017 12:26:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to; bh=MKo9o8WbAsU08K2dcWj8m5bdCCrlU52vpvlQFSd4Ap0=; b=iH6Z4irswbzH6ux/JEXdAEykYS/Ajb5IycPcRhDNb/S+tupNgLTChMJ0iVSLhC0IPa TDNFScPoPDGPH0X7SNLL1atb5SaoEgKdXqGJRHxdIfTf10vH2xOWPdXL3gedpAShWPKw ZR+OH6VpanhMG+s0eVE442nGRX+e9gBRkmcVxnZlxfvGK8If9j2s3a7hYhdr558nnyga Kc5tGdkQrHABKy/2PZ9NAGlTndjGRKXKoaGZZURG6ok66EmSNIZm6nIL/IgF9g/iNoh9 liius+JJ6uzcfuXw+4P+zqEE6dsc93dCWcHaWMAuwP7XsPrQxp0SqI0CJ1SVTzzyJ9I4 9W4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to; bh=MKo9o8WbAsU08K2dcWj8m5bdCCrlU52vpvlQFSd4Ap0=; b=qWSLC/dG4wyRRR/ROlKzSb28cAIxbWftKXsaVZ46vDm0lIq9QhQdSuGcis9Vye/g49 j8ptdo5Zdadm6zLkJdjBm2Unt2gBXSyFM93jeGsX2x0rs8g+5ZIbkgIdhG/5JSH/ear0 ziZ4LVodldzfAQHQAS/fWTNK3rqKMGGStKAkgOtqmAlI/ISnDZyNvNazJQFaxRzu4dWU pMXC64wu9tAl6IteY717hiflafesa7seh482aGG4SERsvpXPNzeT0eekgdlae5VHk7q7 97SCSUq1vo+9K5WPbQSl/rNYTXi5OwAbb6uIIEX52D0rzJIJ/MC9+lrkmXHZb9CwU3rx 1w1Q== X-Gm-Message-State: AMCzsaV6wtyBSB+gkxZ1cmmyn8hnkYehkvkSE8Cpe7FBeAMPXlidtqxr 8YD6I1OcVMn6Fj2nIfvLJr242nXS5lJB2DZJQsutBiyM X-Google-Smtp-Source: AOwi7QC5da4Q3LF40ChfM24mnT0V4FCx/9mScqTWz9BeitzUzMMylZmpd6r4yxtVM0fZfFgpiRQ+yeTbhWVW6Ds89kA= X-Received: by 10.28.10.132 with SMTP id 126mr1968118wmk.111.1506972406005; Mon, 02 Oct 2017 12:26:46 -0700 (PDT) MIME-Version: 1.0 Received: by 10.223.173.7 with HTTP; Mon, 2 Oct 2017 12:26:25 -0700 (PDT) In-Reply-To: References: Date: Mon, 2 Oct 2017 12:26:25 -0700 Message-ID: Subject: Re: [AE] Face Tracker to 3D data? To: After Effects Mail List Content-Type: multipart/alternative; boundary="001a114420a6f256fc055a955adf" --001a114420a6f256fc055a955adf Content-Type: text/plain; charset="UTF-8" Little update - I'm actually having some success just creating a 3D solid, putting it at the right part of the head I want to track, and then multiplying it's position by the X, Y, and Z offset percentages that the face tracker creates. Something like this for position, where I add some expression sliders ("Offset X", etc) to tweak the amount of translation: tempX = thisComp.layer("FaceFootage.mov").effect("Face Measurements")("Offset X") * .01 * effect("Scale Offset X")("Slider"); tempY = thisComp.layer("FaceFootage.mov").effect("Face Measurements")("Offset Y") * .01 * effect("Scale Offset Y")("Slider"); tempZ = thisComp.layer("FaceFootage.mov").effect("Face Measurements")("Offset Z") * .01 * effect("Scale Offset Z")("Slider"); [transform.position[0] + transform.position[0] * tempX, transform.position[1] + transform.position[1] * tempY, transform.position[2] + transform.position[2] * tempZ] It's pretty noisy on Z, but I bet I could smooth the data and then send this to C4D via Cineware. Still open to hearing any suggestions from anyone that has played with this! Thanks again, - Nathan On Mon, Oct 2, 2017 at 12:06 PM, Nathan Shipley wrote: > Thanks, Lloyd - but that just creates 2D nulls, same as the pickwhip-able > positions the face tracker itself creates. Looking for a way to make them > in actual 3D space with Z movement and 3D rotation. > > On Mon, Oct 2, 2017 at 12:00 PM, Lloyd Alvarez > wrote: > >> Face Tracker to Nulls: https://aescripts.com/face-tracker-to-nulls/ >> >> Lloyd >> >> On Mon, Oct 2, 2017 at 3:58 PM Nathan Shipley >> wrote: >> >>> I'm working on replicating a Snapchat/Instagram face filter effect where >>> objects (ears, eyes, etc.) are tracked onto footage of a talking head. >>> >>> It's the first time I've had reason to use the face tracker in AE and >>> I'm impressed with results. If I only needed to add 2D or simple 3D card >>> objects to my footage, it seems like I could use the results I'm getting. >>> However, I need to place actual animated 3D objects on the head from >>> Cineware or Maya that match the rotation, position, etc of the face. Think >>> cartoon-animated 3D ears, etc. >>> >>> Has anyone developed a expression/script/plugin to convert the AE face >>> tracking data to actual 3D position data? It generates a bunch of 2D >>> feature positions plus an overall orientation and offset in X, Y, and Z. >>> The offset is as a percentage -- perhaps this can be converted to actual 3D >>> units? >>> >>> Or, alternately, have any of you used other software to do this? Seems >>> like FaceRig Studio can export FBX data from a video feed and that may be >>> my easiest route for actual 3D data. >>> >>> I'd love to keep this animation within AE and Cineware and not have to >>> use Syntheyes/some other face tracking software but am open to suggestions. >>> >>> Gonna play around with writing an expression, but thought I'd check here >>> before diving too deep into it. Thanks! >>> >>> - Nathan >>> >> -- >> Cheers, Lloyd >> > > --001a114420a6f256fc055a955adf Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Little update - I'm actually having some success just = creating a 3D solid, putting it at the right part of the head I want to tra= ck, and then multiplying it's position by the X, Y, and Z offset percen= tages that the face tracker creates.

Something like this= for position, where I add some expression sliders ("Offset X", e= tc) to tweak the amount of translation:

tempX =3D thisComp.layer("FaceFootage.mov").e= ffect("Face Measurements")("Offset X") * .01 * effect(&= quot;Scale Offset X")("Slider");
tempY =3D thisComp.layer("FaceFoo= tage.mov").effect("Face Measurements")("Offset Y")= * .01 * effect("Scale Offset Y")("Slider");
tempZ =3D thisComp.la= yer("FaceFootage.mov").effect("Face Measurements")(&quo= t;Offset Z") * .01 * effect("Scale Offset Z")("Slider&q= uot;);

=
[transform= .position[0] + transform.position[0] * tempX, transform.position[1] + trans= form.position[1] * tempY, transform.position[2]=C2=A0 + transform.position[= 2] * tempZ]

It's pre= tty noisy on Z, but I bet I could smooth the data and then send this to C4D= via Cineware.

Still open to hearing any suggestio= ns from anyone that has played with this!

Thanks a= gain,
=C2=A0- Nathan

On Mon, Oct 2, 2017 at 12:06 PM, Nathan Shipley <AE-List@media-motion.tv> wrote:
Thanks,= Lloyd - but that just creates 2D nulls, same as the pickwhip-able position= s the face tracker itself creates.=C2=A0 Looking for a way to make them in = actual 3D space with Z movement and 3D rotation.

On Mon, Oct 2, 2017 at 12:00 PM, Lloyd= Alvarez <AE-List@media-motion.tv> wrote:
Face Tracker to Nulls:=C2= =A0https://aescripts.com/face-tracker-to-nulls/=C2=A0
<= /div>

Lloyd
--
Cheers, Lloyd


--001a114420a6f256fc055a955adf--