![](https://cdn.myportfolio.com/dcd7eaa637b9d3e2d8ffa9afa90f87a0/8ddaa8a7-8c38-4553-aac0-08ccb14fae0f_rw_1920.jpg?h=447544666665ae02476cdfef10a12c52)
Description/
Hey Google, What did it take to get this project done?
This project had two aspects: To create content for preexisting displays throughout Las Vegas and to create a series of animations to be played 24 hours a day on a custom dual display at Google’s playground at CES. My first duty was to automate the query and response animations that were to be used throughout the project. Then, I was in charge of one of the larger displays with the most configuration of products being advertised. Finally, I flew out to Las Vegas with the BNS team to finalize and assure all 100+ animations were screen ready for the opening launch at CES.
This project had two aspects: To create content for preexisting displays throughout Las Vegas and to create a series of animations to be played 24 hours a day on a custom dual display at Google’s playground at CES. My first duty was to automate the query and response animations that were to be used throughout the project. Then, I was in charge of one of the larger displays with the most configuration of products being advertised. Finally, I flew out to Las Vegas with the BNS team to finalize and assure all 100+ animations were screen ready for the opening launch at CES.
Duties/
Animation, AE Automation, Project Manager of Animation
From Las Vegas in Situation/
Automation/
![](https://cdn.myportfolio.com/dcd7eaa637b9d3e2d8ffa9afa90f87a0/5bff0c8c-8b72-4de9-89bc-93ad6ba06c95_rw_1200.gif?h=258c94028c6c67b6654d0fae60e2be1b)
![](https://cdn.myportfolio.com/dcd7eaa637b9d3e2d8ffa9afa90f87a0/e04d27b7-e703-4269-9dae-322938982cd8_rw_1200.gif?h=58b98cec9d4e4775ef0e528e42040562)
Both query and response bubble size reacted dynamically to the length of text. The text itself also had a custom expression to allow it to write on with a slide controller in order to work with the bubble size expression. Olle Engström designed the animation for all the Google branding elements used in the project.
Expression/
Source text expression write on. (written by: Dan Ebberts)
s = effect("Slider Control")("Slider").value;
str = "";
txt = value.split(" ");
for (i = 0; i < Math.min(txt.length,s); i++){
str += (i > 0 ? " " : "") + txt[i];
}
Str
str = "";
txt = value.split(" ");
for (i = 0; i < Math.min(txt.length,s); i++){
str += (i > 0 ? " " : "") + txt[i];
}
Str
Photos from Event/
![](https://cdn.myportfolio.com/dcd7eaa637b9d3e2d8ffa9afa90f87a0/9b3e95c2-2d96-4b57-b515-9346df70bcb0_rw_1920.jpg?h=8ebda638b715d1c9d2fb0b048006e3bf)
![](https://cdn.myportfolio.com/dcd7eaa637b9d3e2d8ffa9afa90f87a0/5c545252-14c3-4c22-a25f-fdcdb44a63b5_rw_1920.jpg?h=b955070ce791c4eedb36296b7f0e5225)
![](https://cdn.myportfolio.com/dcd7eaa637b9d3e2d8ffa9afa90f87a0/195f37fa-bde6-4bf9-a54b-17a9184d3d40_rw_1920.jpg?h=83ad7469bab314505af0ec1c398b4750)
![](https://cdn.myportfolio.com/dcd7eaa637b9d3e2d8ffa9afa90f87a0/008ba636-644c-4360-85e2-574bb3120cfe_rw_1920.jpg?h=bcd910bcddfa05544f57fdf9b846fcda)
![](https://cdn.myportfolio.com/dcd7eaa637b9d3e2d8ffa9afa90f87a0/9f5a6642-e7d1-4b52-b306-6d742a897cc9_rw_1920.jpg?h=bf5194a655602a8e547bcf48408f1a87)
![](https://cdn.myportfolio.com/dcd7eaa637b9d3e2d8ffa9afa90f87a0/4469f5c3-d18b-4b66-b465-84502982b0b4_rw_1920.jpg?h=e37dce213277bc4f2dabda0e4a3e8720)
![](https://cdn.myportfolio.com/dcd7eaa637b9d3e2d8ffa9afa90f87a0/e84296d4-c20d-494d-85a7-d0dbab10edaa_rw_1920.jpg?h=a46015ea0ef0178eb7062805470915ab)
![](https://cdn.myportfolio.com/dcd7eaa637b9d3e2d8ffa9afa90f87a0/0b4f4a62-e63a-4d90-8196-8314173d459d_rw_1920.jpg?h=03d77413e42e218b79c9914847aba1aa)
![](https://cdn.myportfolio.com/dcd7eaa637b9d3e2d8ffa9afa90f87a0/3194ff64-0bdc-4675-a63b-c1710ff7f677_rw_1920.jpg?h=8e33ebda6ede2491d96d17ff5a1878ab)
![](https://cdn.myportfolio.com/dcd7eaa637b9d3e2d8ffa9afa90f87a0/0c2492b7-9356-4585-beee-4f47c10c9840_rw_1920.jpg?h=8f50b667a56f1dba51787d24caccfe07)
![](https://cdn.myportfolio.com/dcd7eaa637b9d3e2d8ffa9afa90f87a0/26baa898-a2ac-4d4a-8e4e-69adfb685924_rw_1920.jpg?h=74d980405b6bf0cb08a80353e2dc26d4)
![](https://cdn.myportfolio.com/dcd7eaa637b9d3e2d8ffa9afa90f87a0/0e61aa61-af9b-42a6-b339-9d9693dd9d09_rw_1920.jpg?h=746e83f6220cc7df6937bcf091f2d528)
![](https://cdn.myportfolio.com/dcd7eaa637b9d3e2d8ffa9afa90f87a0/fa953017-d8b7-48b9-a791-e6753c5d15e5_rw_1200.jpg?h=49ca1ec4c14e0391cd316fe0daeaad59)
![](https://cdn.myportfolio.com/dcd7eaa637b9d3e2d8ffa9afa90f87a0/47b0a649-f0a4-4dd1-a9bb-9512ffe81296_rw_1200.jpg?h=c9a270d0092d517a0489d0b9d3c5cd4e)
![](https://cdn.myportfolio.com/dcd7eaa637b9d3e2d8ffa9afa90f87a0/5180ed80-3de1-4444-8fda-c6556a88eaf2_rw_1920.jpg?h=081eb2e4e58d51873c16166a031bfa0b)
Harmon Sqaure Display/
Breakdown & Build/
![](https://cdn.myportfolio.com/dcd7eaa637b9d3e2d8ffa9afa90f87a0/89bda6b5-74c9-4ddf-adad-145a702fd870_rw_1200.gif?h=1a2fcd082e5ff40c1ecfaf43d243942f)
The Harmon animation was designed to be modular and was built within a dimensional grid that allowed itself to looped.
![](https://cdn.myportfolio.com/dcd7eaa637b9d3e2d8ffa9afa90f87a0/8ba79447-9816-4b46-aaed-ec98904fc895_rw_1200.gif?h=a1526f4374901f349ae039be7ddaec4a)
![](https://cdn.myportfolio.com/dcd7eaa637b9d3e2d8ffa9afa90f87a0/805dda22-b3f3-4a79-9c6e-86ab38a67d9b_rw_1200.gif?h=5b6e3df811fb2b32e4b8c8246b4323b9)
An expression was used to automate all the products to reveal themselves based on the camera's location.
Expression/
Camera Z Distance, Layer Fade in and Out. (written by: Dan Ebberts)
fadeInStart = XXXX; // Connect to Slider
fadeInEnd = XXXX; // Connect to Slider
fadeOutStart = XXXX; // Connect to Slider
fadeOutEnd = XXXX; // Connect to Slider
C = thisComp.activeCamera; // Or connect to any camera in any comp
v1 = toWorld(anchorPoint) - C.toWorld([0,0,0]);
v2 = C.toWorldVec([0,0,1]);
d = dot(v1,v2);
if (d > fadeInEnd)
linear(d,fadeInEnd,fadeInStart,100,0)
else if (d > fadeOutStart)
100
else
linear(d,fadeOutEnd,fadeOutStart,0,100);
fadeInEnd = XXXX; // Connect to Slider
fadeOutStart = XXXX; // Connect to Slider
fadeOutEnd = XXXX; // Connect to Slider
C = thisComp.activeCamera; // Or connect to any camera in any comp
v1 = toWorld(anchorPoint) - C.toWorld([0,0,0]);
v2 = C.toWorldVec([0,0,1]);
d = dot(v1,v2);
if (d > fadeInEnd)
linear(d,fadeInEnd,fadeInStart,100,0)
else if (d > fadeOutStart)
100
else
linear(d,fadeOutEnd,fadeOutStart,0,100);
Fashion Show Display/
Andoid Auto/
Hey Google Animation/
![](https://cdn.myportfolio.com/dcd7eaa637b9d3e2d8ffa9afa90f87a0/889157fb-3186-4c41-a483-a78a28ebd84f_rw_1200.gif?h=f620cd23093dfd56a69092e642fa7f3a)
To make this animation easy to create and manage an expression was developed to scale the layer up and down within its on timeline length.
Expression/
Scale in and out based on layer's timeline length. (written by: Dan Ebberts)
cIn = thisComp.layer("Control_Scale_In").transform.scale; //Controler layer to scale in
dIn = cIn.key(cIn.numKeys).time - cIn.key(1).time;
cOut = thisComp.layer("Control_Scale_Out").transform.scale; //Controler layer to scale out
dOut = cOut.key(cOut.numKeys).time - cOut.key(1).time;
dIn = cIn.key(cIn.numKeys).time - cIn.key(1).time;
cOut = thisComp.layer("Control_Scale_Out").transform.scale; //Controler layer to scale out
dOut = cOut.key(cOut.numKeys).time - cOut.key(1).time;
if (time < inPoint+dIn){
cIn.valueAtTime(cIn.key(1).time + time - inPoint);
}else if (time < outPoint - dOut){
cOut.valueAtTime(cOut.key(1).time);
}else{
cOut.valueAtTime(cOut.key(cOut.numKeys).time - (outPoint - time));
}
cIn.valueAtTime(cIn.key(1).time + time - inPoint);
}else if (time < outPoint - dOut){
cOut.valueAtTime(cOut.key(1).time);
}else{
cOut.valueAtTime(cOut.key(cOut.numKeys).time - (outPoint - time));
}
Credits/
Creative Directors: Jonathan Notaro, Bucky Fukumoto, Mike Calvert
Designers: Jonathan Notaro, Bucky Fukomoto, Mike Calvert, Ollë Engstrom, Abigal Oh, Kyra Odi
Producers: Johnna MacArthur, Greg Babiuk, Katherine Allen
Lead Animator (Google Branding): Olle Engström
Project Manager Animation: Olle Engström & Gerald Mark Soto
Animation: Olle Engström, Gerald Mark Soto, Paul Yung Jae Suh, Paolo Garcia, Jaewoo Park, DeeKay Kwon, Seong Yeop Sim, Mike Costabile, Jim Forster, Matthew Lane-Smith, Jay Kim, Adam Stockett, Doug Bello & Many more
Complete booth content managed by: Red Paper Heart
Designers: Jonathan Notaro, Bucky Fukomoto, Mike Calvert, Ollë Engstrom, Abigal Oh, Kyra Odi
Producers: Johnna MacArthur, Greg Babiuk, Katherine Allen
Lead Animator (Google Branding): Olle Engström
Project Manager Animation: Olle Engström & Gerald Mark Soto
Animation: Olle Engström, Gerald Mark Soto, Paul Yung Jae Suh, Paolo Garcia, Jaewoo Park, DeeKay Kwon, Seong Yeop Sim, Mike Costabile, Jim Forster, Matthew Lane-Smith, Jay Kim, Adam Stockett, Doug Bello & Many more
Complete booth content managed by: Red Paper Heart
Client: Google
Made at Brand New School
Made at Brand New School