Computerist-inspired Illustrations

Original Source: http://feedproxy.google.com/~r/abduzeedo/~3/hmOm-hlcNbc/computerist-inspired-illustrations

Computerist-inspired Illustrations
Computerist-inspired Illustrations

AoiroStudio07.08.20

Ada Zielińska is an artist based in Warszawa, Poland. She has shared a series of commissioned & personal illustrations from the past year until now. These illustrations caught my attention of its retro aesthetics that would trigger memories from the ‘Omni Magazine’ days. Where science and fiction came together to combine and share knowledge for its readers. This is pure futurism and I really dig them. What do you think?

Links

https://www.behance.net/adazielinska
https://www.instagram.com/zielinska.ada/

 


FORK – Surreal Journey Interrogating our Perception

Original Source: http://feedproxy.google.com/~r/abduzeedo/~3/IhPdK7g8Iq4/fork-surreal-journey-interrogating-our-perception

FORK – Surreal Journey Interrogating our Perception
FORK - Surreal Journey Interrogating our Perception

abduzeedo07.07.20

In a museum, a woman looking at a Fork exhibited as a piece of Art let her imagination run wild. The film is a surreal journey interrogating our perception of objects. What happens when you take an object from daily life and move it outside of its original context? What is left of an object when it loses its function? An abstract shape, a sculpture? Can we deconstruct this object into simple elements and create variation of this object? Can those objects be combined to form a larger structure? Can those objects become alive to break free from human ownership? That’s the synopsis of FORK, a really cool film and motion design project created by the amazing people over at Optical Arts a creative studio based in London. With an experimental approach and a collective spirit we explore new ways to tell visual stories, applying innovative techniques to live action, digital and print.

Director Fabrice Le Nezet:

We choose to work with simple objects, some iconic items everyone could easily recognize. A fork, a stool, a Mug. Because we wanted to play with sculptural forms, we chose objects that are beautiful and elegant with clear volume and silhouette.

Behind the Scenes:

Most of this project was completed in lockdown due to Covid-19 pandemic. This presented its own unique challenges, working remotely for the CGI elements was fairly straightforward, but we had to delay the live action element of the shoot until Government restrictions eased. We kept the crew to a minimum and implemented a strict social distancing of two meters and masks and gloves were worn by all. Planning an extra prellight day to the schedule allowed us to set up the different shots with only essential lighting and camera crew, creating a much less demanding, more efficient and most importantly safe shoot day.

Technical Considerations:

The film has been made using a combination of Maya and Houdini and was rendered in Redshift. All shots were then composed in Nuke and Flame and graded using Resolve.

The procedural approach of Houdini made it the perfect tool to create this project. 

While developing some R&D we were able to quickly sketch ideas and seamlessly test dynamic behaviour. Animation was achieved through a mixture of physic based simulation alongside some more manual bespoke procedural setup.

Credits

Creative Direction & Production: Optical Arts
Direction & Design: Fabrice Le Nezet
Music & Sound Design: Niccolò Chotkowski at Smider
VFX Supervisor: Fabrice Le Nezet
2D Supervisor: Miguel Wratten
3D Artist: Max Johnson
Colourist: Martin Pryor
Live Action Producer: Caroline Kinch
Live Action DP: Joe Jackson
1st Assistant Camera: Elliott Lowe
Set Assistant: Jamie-Lee Harding
Model: Emma Norodom at W Models
Clothing: Studio Nicholson

For more information and to read the full making of I highly recommend that you check out https://opticalarts.studio/fork/


Collective #612

Original Source: http://feedproxy.google.com/~r/tympanus/~3/kkY72bec1W8/

Inspirational Website of the Week: Sennesro

Simplicity, elegance and flowy motion made us pick Sennesro as inspirational website this week.

Get inspired

60 Days of Animation

The Undead Institute offers books on HTML, CSS, Responsive Design and more that marry humor, excellent teaching, and brain-lodging practice for an experience that’ll outlive the apocalypse.

Check it out

Irregular-shaped Links with Subgrid

In this excellent article, Michelle Barker shows how CSS subgrid can solve the problem of irregular, distributed link shapes.

Read it

Our Sponsor
Efficiently build beautiful websites for your clients

You’ve never built a WordPress website like this before. Divi is more than just a WordPress theme, it’s a completely new website building platform that replaces the standard WordPress post editor with a vastly superior visual editor.

Check it out

Stryve

A new community for tech enthusiasts to share, learn, and build their careers.

Check it out

The design systems between us

Ethan Marcotte shares his thoughts on why he believes that design systems haven’t brought rich, cross-functional collaboration to most organizations.

Read it

Understanding Template Literals in JavaScript

Tania Rascia’s in-depth explanation of template literals in JavaScript.

Read it

html.systems

An excellent library of components built with HTML, CSS and JavaScript.

Check it out

3D banners with ScrollTrigger

A supercool GSAP scroll demo with some 3D magic.

Check it out

Getting CSS Translate values with JavaScript

Zell Liew shows how you can get CSS translate values in JavaScript by parsing 2d and 3d matrices.

Read it

Aligning Logo Images in CSS

Ahmad Shadeed tackles the task of taking a group of logos, and exploring many ways to align and position them perfectly in CSS.

Read it

Design Better Buttons

A great read on button design best practices by Andrew Coyle.

Read it

Launching docs.github.com

Jenn Leaver writes about the launch of docs.github.com, a single home for all of GitHub’s product documentation.

Read it

Profiled

With Profiled you can create a developer portfolio from your GitHub account.

Check it out

Is WebP really better than JPEG?

According to Google, WebP is 25 – 34% smaller than JPEG at equivalent quality. But how much of it is really true? Find out in this article by Johannes Siipola.

Read it

Free Faces

A great selection of freely available fonts.

Check it out

CSS Painting vs. CSS Houdini Paint API

Lisi Linhart takes a look at the performance of the Paint API vs. traditional CSS painting.

Read it

Dark Ages of the Web

A fun journey that recaps the old Web features and front-end patterns.

Check it out

I Just Hit $100k/yr On GitHub Sponsors!

Caleb Porzio shares his fascinating story of a successful open source project and the earnings he’s made with its screencasts.

Read it

The Google ‘vs’ Trick

Read how ego graphs can help you learn about AI, play chess, eat healthier, buy a dog and find love.

Read it

From Our Blog
Creating a Menu Image Animation on Hover

A tutorial on how to create a hover effect for a menu where images appear with an animation on each item.

Check it out

From Our Blog
UI Interactions & Animations Roundup #8

A new collection of UI animation shots that summarizes the latest creative trends.

Check it out

From Our Blog
Inspirational Websites Roundup #16

This special collection of wonderful websites will get you up-to-date on current web design trends.

Check it out

The post Collective #612 appeared first on Codrops.

Excellent Ideas to Make Money as a Graphic Designer

Original Source: http://feedproxy.google.com/~r/Designrfix/~3/EotLqcOYkKg/excellent-ideas-to-make-money-as-a-graphic-designer

Image source: Burst.Shopify.com Given the current situation in the world, a lot of people have more time to spend at home. Some take this opportunity to be with their families, while others are looking to make extra money. While there are a lot of industries that have to stop or become limited, those who work […]

The post Excellent Ideas to Make Money as a Graphic Designer appeared first on designrfix.com.

Earning Made Easy in 2020 With ClickFunnels

Original Source: http://feedproxy.google.com/~r/Designrfix/~3/jUCWlbRXSTo/earning-made-easy-in-2020-with-clickfunnels

Starting a company was never easy, but now if they are not online, they practically don’t exist. If you are stressing over your startup or are trying to figure out the ins and outs of how to establish your presence online, ClickFunnels are just what you are looking for. ClickFunnels helps business owners with the […]

The post Earning Made Easy in 2020 With ClickFunnels appeared first on designrfix.com.

Power and portability: The laptop changing the game for 3D artists

Original Source: http://feedproxy.google.com/~r/CreativeBloq/~3/7ZY0fekA3eo/zenbook-pro-duo-3d-artists

If you are a 3D artist, chances are your studio will include at least a large workstation, multiple monitors and a graphics tablet. The hardware required to create show-stopping 3D art doesn’t exactly lend itself to working on the go. Until now. 

Introducing the blisteringly powerful, dual screen Asus ZenBook Pro Duo laptop. 

The foundation of any workstation is the processing power, and this is where the Zenbook excels. Under the hood of this amazing device you’ll find an Intel Core i9 CPU and NVIDIA RTX 2060 GPU, providing all the power to support the most complex of 3D tasks at speed. 

A creative game-changer

But all the processing power in the world is next to useless unless you can harness it properly, and this is where the ZenBook Pro Duo really shines. This laptop has been specifically designed to help 3D and digital artists make the most of the immense power that lies beneath its equally impressive-looking exterior. 

Built into the ZenBook Pro Duo are not one but two 4K screens, both of which are touch sensitive and colour accurate. The glossy main OLED display is beautifully crisp, but it’s the second screen that really makes this device a game-changer for digital and 3D artists. 

Located at the top of the lower half of the device, the second screen boasts a paper-like finish that works wonderfully with the stylus included. A 3D artist’s workflow will often involve working with multiple palettes and keyboard shortcuts. In this case the second screen is ideal for docking these palettes for easy access and to free up the main screen for the perspective viewport.

The extra screen also means the keyboard has moved to the front edge of the laptop’s body and the trackpad to the right. A huge ergonomic improvement over centralised trackpads, the ZenBook Pro Duo puts an end to reaching over the chassis when typing or using keyboard shortcuts, and offers a much more natural workflow. To use the second screen will, however, mean leaning over the keyboard. But Asus has all bases covered with this design, adding an in-built function to simply lock the keys.

Highly portable power

The ZenBook Pro Duo’s unique design and rich feature set makes for a highly intuitive user experience on a truly mobile workstation that doesn’t compromise on power, and, in many cases, excels over that of a desktop experience.

If you are a 3D or digital artist who needs uncompromised power and portability, the Zenbook Pro Duo is the best solution.


Whimsical Balance in 3D

Original Source: http://feedproxy.google.com/~r/abduzeedo/~3/_UTO6zh33Xs/whimsical-balance-3d

Whimsical Balance in 3D
Whimsical Balance in 3D

abduzeedo07.02.20

Pol Solà has an incredible portfolio with some beautiful projects like Rings Of Saturn which was featured on Behance. There’s something about his projects that capture the 80s, in special, that sense of discovering what 3D and CGI could bring to the world in terms of visual design. With “Whimsical Balance” Pol creates a new a series of 3D explorations in collaboration with Guasch Studio. This project expands a bit more the use of textures and other materials. Glass and its reflection/refractions, caustics and how these materials and effects interact with each other to create the whimsical balance.

3D 

Image may contain: indoor

Process

Image may contain: screenshot, illustration and cartoonImage may contain: fog

Part II

Image may contain: indoor, table and wall

Process

​​​Image may contain: cartoon, drawing and vector graphicsImage may contain: cartoon and abstract

Part III

Image may contain: indoor and screenshot ​​

Process

Image may contain: cartoon, illustration and screenshotImage may contain: wall, screenshot and indoor

Taking one of Pol Sola’s Illustrations as a starting point, this 3D series with Guasch Studio is an exploration of visual tricks: Lights and shadows giving depth and sense to objects that play within the space, still movement and whimsical balance.

For more information make sure to check out Pol’s Instagram and Guasch’s Instagram 


Learn web design using Adobe XD

Original Source: http://feedproxy.google.com/~r/CreativeBloq/~3/Us4ji5JU37Y/learn-uiux-web-design-using-adobe-xd

A designer never stops learning new programs, tools, and techniques. Whether you want to start your creative career or further your design speciality, The Ultimate UX/UI Designer Bundle is a great way to finesse your web design expertise, and create responsive and user-friendly websites. Best yet, it's currently price-dropped to only $29.

With over 35 hours of lectures and more than 200 tutorials, this comprehensive design bundle brings you everything you need to master HTML5, CSS3, jQuery, JavaScript, and more, without needing former training in front end web development. The eight-course master bundle focuses on various levels of experience, so no matter where you are in your design journey, you're likely to get something out of it. And the best web design tools will help, too.

Start with essential tutorials and move forward

You'll start with beginner-friendly UX/UI essential tutorials and move your way into more advanced techniques in industry-leading software. Courses on HTML5 Canvas and Bootstrap 4 will get you up to speed with key streamlining web developer elements, while other front end web courses will teach you the essential tools to styling and structuring your code to get the results you want. With step-by-step tutorials and no time constraints, you'll be able to learn at your own pace and visit each lesson whenever you want.  

Not only will you learn how to create the framework needed to develop apps and websites, but you'll also comprehend how to understand the needs of your users to get them the results they want. With project-based courses in powerful software platforms, such as Adobe XD and Illustrator, you'll be on your way to ramping up your design skills based on device – desktop, tablet, mobile, and more. By the end of the courses, you'll have the tools you need to create and present a visual roadmap for your clients successfully. Plus, a certification of completion is included in the bundle, allowing for valuable credentials to add to your résumé and portfolio. 

While access to The Ultimate UX/UI Designer Bundle is valued at over $1,500 for a limited time, you can start your developer journey at only $29 – that's a saving of 98 per cent. With all the content available 24/7, you'll soon be on your way to finessing your UX/UI skills and developing stunning websites and apps for projects of all sizes in 2020. 

Read more:

The next big thing in web design: 7 trends you need to knowThe best laptops for programming in 2020The future of frameworks: What's in store for the rest of 2020?

Creating a Menu Image Animation on Hover

Original Source: http://feedproxy.google.com/~r/tympanus/~3/N1YGL0M-ap0/

At Codrops, we love experimenting with playful hover effects. Back in 2018, we explored a set of fun hover animations for links. We called that Image Reveal Hover Effects and it shows how to make images appear with a fancy animation when hovering items of a menu. After seeing the fantastic portfolio of Marvin Schwaibold, I wanted to try this effect again on a larger menu and add that beautiful swing effect when moving the mouse. Using some filters, this can also be made more dramatic.

If you are interested in other similar effect, have a look at these:

Image Trail EffectsImage Distortion Effects with SVG FiltersImage Dragging Effects

So, today we’ll have a look at how to create this juicy image hover reveal animation:

Some Markup and Styling

We’ll use a nested structure for each menu item because we’ll have several text elements that will appear on page load and hover.

But we’ll not go into the text animation on load or the hover effect so what we are interested in here is how we’ll make the image appear for each item. The first thing I do when I want to make a certain effect is to write up the structure that I need using no JavaScript. So let’s take a look at that:

<a class=”menu__item”>
<span class=”menu__item-text”>
<span class=”menu__item-textinner”>Maria Costa</span>
</span>
<span class=”menu__item-sub”>Style Reset 66 Berlin</span>
<!– Markup for the image, inserted with JS –>
<div class=”hover-reveal”>
<div class=”hover-reveal__inner”>
<div class=”hover-reveal__img” style=”background-image: url(img/1.jpg);”></div>
</div>
</div>
</a>

In order to construct this markup for the image, we need to save the source somewhere. We’ll use a data attribute on the menu__item, e.g. data-img=”img/1.jpg”. We’ll go into more detail later on.

Next, we’ll have some styling for it:

.hover-reveal {
position: absolute;
z-index: -1;
width: 220px;
height: 320px;
top: 0;
left: 0;
pointer-events: none;
opacity: 0;
}

.hover-reveal__inner {
overflow: hidden;
}

.hover-reveal__inner,
.hover-reveal__img {
width: 100%;
height: 100%;
position: relative;
}

.hover-reveal__img {
background-size: cover;
background-position: 50% 50%;
}

Any other styles that are specific to our effect (like the transforms) we’ll add dynamically.

Let’s take a look at the JavaScript.

The JavaScript

We’ll use GSAP and besides our hover animation, we’ll also use a custom cursor and smooth scrolling. For that we’ll use the smooth scroll library from the amazing folks of Locomotive, the Agency of the year. Since those are both optional and out of the scope of the menu effect we want to showcase, we’ll not be covering it here.

First things first: let’s preload all the images. For the purpose of this demo we are doing this on page load, but that’s optional.

Once that’s done, we can initialize the smooth scroll instance, the custom cursor and our Menu instance.

Here’s how the entry JavaScript file (index.js) looks like:

import Cursor from ‘./cursor’;
import {preloader} from ‘./preloader’;
import LocomotiveScroll from ‘locomotive-scroll’;
import Menu from ‘./menu’;

const menuEl = document.querySelector(‘.menu’);

preloader(‘.menu__item’).then(() => {
const scroll = new LocomotiveScroll({el: menuEl, smooth: true});
const cursor = new Cursor(document.querySelector(‘.cursor’));
new Menu(menuEl);
});

Now, let’s create a class for the Menu (in menu.js):

import {gsap} from ‘gsap’;
import MenuItem from ‘./menuItem’;

export default class Menu {
constructor(el) {
this.DOM = {el: el};
this.DOM.menuItems = this.DOM.el.querySelectorAll(‘.menu__item’);
this.menuItems = [];
[…this.DOM.menuItems].forEach((item, pos) => this.menuItems.push(new MenuItem(item, pos, this.animatableProperties)));


}

}

So far we have a reference to the main element (the menu <nav>
element) and the menu item elements. We’ll also create an array of our MenuItem instances. But let’s cover that bit in a moment.

What we’ll want to do now is to update the transform (both, X and Y translate) value as we move the mouse over the menu items. But we might as well want to update other properties. In our case we will additionally be updating the rotation and the CSS filter value (brightness). For that, let’s create an object that stores this configuration:

constructor(el) {

this.animatableProperties = {
tx: {previous: 0, current: 0, amt: 0.08},
ty: {previous: 0, current: 0, amt: 0.08},
rotation: {previous: 0, current: 0, amt: 0.08},
brightness: {previous: 1, current: 1, amt: 0.08}
};
}

With interpolation, we can achieve the smooth animation effect when moving the mouse. The “previous” and “current” values are the values we’ll be interpolating. The current value of one of these “animatable” properties will be one between these two values at a specific increment. The value of “amt” is the amount to interpolate. As an example, the following formula calculates our current translationX value:

this.animatableProperties.tx.previous = MathUtils.lerp(this.animatableProperties.tx.previous, this.animatableProperties.tx.current, this.animatableProperties.tx.amt);

Finally, we can show the menu items, which are hidden by default. This was just a little extra, and totally optional, but it’s definitely a nice add-on to reveal each item with a delay on page load.

constructor(el) {

this.showMenuItems();
}
showMenuItems() {
gsap.to(this.menuItems.map(item => item.DOM.textInner), {
duration: 1.2,
ease: ‘Expo.easeOut’,
startAt: {y: ‘100%’},
y: 0,
delay: pos => pos*0.06
});
}

That’s it for the Menu class. What we’ll be looking into next is how to create the MenuItem class together with some helper variables and functions.

So, let’s start by importing the GSAP library (which we will use to show and hide the images), some helper functions and the images inside our images folder.

Next, we need to get access to the mouse position at any given time, since the image will follow along its movement. We can update this value on “mousemove” . We will also cache its position so we can calculate its speed and movement direction for both, the X and Y axis.

Hence, that’s what we’ll have so far in the menuItem.js file:

import {gsap} from ‘gsap’;
import { map, lerp, clamp, getMousePos } from ‘./utils’;
const images = Object.entries(require(‘../img/*.jpg’));

let mousepos = {x: 0, y: 0};
let mousePosCache = mousepos;
let direction = {x: mousePosCache.x-mousepos.x, y: mousePosCache.y-mousepos.y};

window.addEventListener(‘mousemove’, ev => mousepos = getMousePos(ev));

export default class MenuItem {
constructor(el, inMenuPosition, animatableProperties) {

}

}

An item will be passed its position/index in the menu (inMenuPosition) and the animatableProperties object described before. The fact that the “animatable” property values are shared and updated among the different menu items will make the movement and rotation of the images continuous.

Now, in order to be possible to show and hide the menu item image in a fancy way, we need to create that specific markup we’ve shown in the beginning and append it to the item. Remember, our menu item is this by default:

<a class=”menu__item” data-img=”img/3.jpg”>
<span class=”menu__item-text”><span class=”menu__item-textinner”>Franklin Roth</span></span>
<span class=”menu__item-sub”>Amber Convention London</span>
</a>

Let’s append the following structure to the item:

<div class=”hover-reveal”>
<div class=”hover-reveal__inner” style=”overflow: hidden;”>
<div class=”hover-reveal__img” style=”background-image: url(pathToImage);”>
</div>
</div>
</div>

The hover-reveal element will be the one moving as we move the mouse.
The hover-reveal__inner element together with the hover-reveal__img (the one with the background image) will be the ones that we can animate together to create fancy animations like reveal/unreveal effects.

layout() {
this.DOM.reveal = document.createElement(‘div’);
this.DOM.reveal.className = ‘hover-reveal’;
this.DOM.revealInner = document.createElement(‘div’);
this.DOM.revealInner.className = ‘hover-reveal__inner’;
this.DOM.revealImage = document.createElement(‘div’);
this.DOM.revealImage.className = ‘hover-reveal__img’;
this.DOM.revealImage.style.backgroundImage = `url(${images[this.inMenuPosition][1]})`;
this.DOM.revealInner.appendChild(this.DOM.revealImage);
this.DOM.reveal.appendChild(this.DOM.revealInner);
this.DOM.el.appendChild(this.DOM.reveal);
}

And the MenuItem constructor completed:

constructor(el, inMenuPosition, animatableProperties) {
this.DOM = {el: el};
this.inMenuPosition = inMenuPosition;
this.animatableProperties = animatableProperties;
this.DOM.textInner = this.DOM.el.querySelector(‘.menu__item-textinner’);
this.layout();
this.initEvents();
}

The last step is to initialize some events. We need to show the image when hovering the item and hide it when leaving the item.

Also, when hovering it we need to update the animatableProperties object properties, and make the image move, rotate and change its brightness as the mouse moves:

initEvents() {
this.mouseenterFn = (ev) => {
this.showImage();
this.firstRAFCycle = true;
this.loopRender();
};
this.mouseleaveFn = () => {
this.stopRendering();
this.hideImage();
};

this.DOM.el.addEventListener(‘mouseenter’, this.mouseenterFn);
this.DOM.el.addEventListener(‘mouseleave’, this.mouseleaveFn);
}

Let’s now code the showImage and hideImage functions.

We can create a GSAP timeline for this. Let’s start by setting the opacity to 1 for the reveal element (the top element of that structure we’ve just created). Also, in order to make the image appear on top of all other menu items, let’s set the item’s z-index to a high value.

Next, we can animate the appearance of the image. Let’s do it like this: the image gets revealed to the right or left, depending on the mouse x-axis movement direction (which we have in direction.x). For this to happen, the image element (revealImage) needs to animate its translationX value to the opposite side of its parent element (revealInner element).
That’s basically it:

showImage() {
gsap.killTweensOf(this.DOM.revealInner);
gsap.killTweensOf(this.DOM.revealImage);

this.tl = gsap.timeline({
onStart: () => {
this.DOM.reveal.style.opacity = this.DOM.revealInner.style.opacity = 1;
gsap.set(this.DOM.el, {zIndex: images.length});
}
})
// animate the image wrap
.to(this.DOM.revealInner, 0.2, {
ease: ‘Sine.easeOut’,
startAt: {x: direction.x < 0 ? ‘-100%’ : ‘100%’},
x: ‘0%’
})
// animate the image element
.to(this.DOM.revealImage, 0.2, {
ease: ‘Sine.easeOut’,
startAt: {x: direction.x < 0 ? ‘100%’: ‘-100%’},
x: ‘0%’
}, 0);
}

To hide the image we just need to reverse this logic:

hideImage() {
gsap.killTweensOf(this.DOM.revealInner);
gsap.killTweensOf(this.DOM.revealImage);

this.tl = gsap.timeline({
onStart: () => {
gsap.set(this.DOM.el, {zIndex: 1});
},
onComplete: () => {
gsap.set(this.DOM.reveal, {opacity: 0});
}
})
.to(this.DOM.revealInner, 0.2, {
ease: ‘Sine.easeOut’,
x: direction.x < 0 ? ‘100%’ : ‘-100%’
})
.to(this.DOM.revealImage, 0.2, {
ease: ‘Sine.easeOut’,
x: direction.x < 0 ? ‘-100%’ : ‘100%’
}, 0);
}

Now we just need to update the animatableProperties object properties so the image can move around, rotate and change its brightness smoothly. We do this inside a requestAnimationFrame loop. In every cycle we interpolate the previous and current values so things happen with an easing.

We want to rotate the image and change its brightness depending on the x-axis speed (or distance traveled from the previous cycle) of the mouse. Therefore we need to calculate that distance for every cycle which we can get by subtracting the mouse position from the cached mouse position.

We also want to know in which direction we move the mouse since the rotation will be dependent on it. When moving to the left the image rotates negatively, and when moving to the right, positively.

Next, we want to update the animatableProperties values. For the translationX and translationY, we want the center of the image to be positioned where the mouse is. Note that the original position of the image element is on the left side of the menu item.

The rotation can go from -60 to 60 degrees depending on the speed/distance of the mouse and its direction. Finally the brightness can go from 1 to 4, also depending on the speed/distance of the mouse.

In the end, we take these values together with the previous cycle values and use interpolation to set up a final value that will then give us that smooth feeling when animating the element.

This is how the render function looks like:

render() {
this.requestId = undefined;

if ( this.firstRAFCycle ) {
this.calcBounds();
}

const mouseDistanceX = clamp(Math.abs(mousePosCache.x – mousepos.x), 0, 100);
direction = {x: mousePosCache.x-mousepos.x, y: mousePosCache.y-mousepos.y};
mousePosCache = {x: mousepos.x, y: mousepos.y};

this.animatableProperties.tx.current = Math.abs(mousepos.x – this.bounds.el.left) – this.bounds.reveal.width/2;
this.animatableProperties.ty.current = Math.abs(mousepos.y – this.bounds.el.top) – this.bounds.reveal.height/2;
this.animatableProperties.rotation.current = this.firstRAFCycle ? 0 : map(mouseDistanceX,0,100,0,direction.x < 0 ? 60 : -60);
this.animatableProperties.brightness.current = this.firstRAFCycle ? 1 : map(mouseDistanceX,0,100,1,4);

this.animatableProperties.tx.previous = this.firstRAFCycle ? this.animatableProperties.tx.current : lerp(this.animatableProperties.tx.previous, this.animatableProperties.tx.current, this.animatableProperties.tx.amt);
this.animatableProperties.ty.previous = this.firstRAFCycle ? this.animatableProperties.ty.current : lerp(this.animatableProperties.ty.previous, this.animatableProperties.ty.current, this.animatableProperties.ty.amt);
this.animatableProperties.rotation.previous = this.firstRAFCycle ? this.animatableProperties.rotation.current : lerp(this.animatableProperties.rotation.previous, this.animatableProperties.rotation.current, this.animatableProperties.rotation.amt);
this.animatableProperties.brightness.previous = this.firstRAFCycle ? this.animatableProperties.brightness.current : lerp(this.animatableProperties.brightness.previous, this.animatableProperties.brightness.current, this.animatableProperties.brightness.amt);

gsap.set(this.DOM.reveal, {
x: this.animatableProperties.tx.previous,
y: this.animatableProperties.ty.previous,
rotation: this.animatableProperties.rotation.previous,
filter: `brightness(${this.animatableProperties.brightness.previous})`
});

this.firstRAFCycle = false;
this.loopRender();
}

I hope this has been not too difficult to follow and that you have gained some insight into constructing this fancy effect.

Please let me know if you have any question @codrops or @crnacura.

Thank you for reading!

The images used in the demo are by Andrey Yakovlev and Lili Aleeva. All images used are licensed under CC BY-NC-ND 4.0

The post Creating a Menu Image Animation on Hover appeared first on Codrops.

Beautiful Collage Illustration by Daniel Escudeiro

Original Source: http://feedproxy.google.com/~r/abduzeedo/~3/MmWg8CEqQ_I/beautiful-collage-illustration-daniel-escudeiro

Beautiful Collage Illustration by Daniel Escudeiro
Beautiful Collage Illustration by Daniel Escudeiro

abduzeedo07.01.20

Daniel Escudeiro shared a really beautiful project on Behance that brought me back some good memories of the 90s and early 2000s. The project is a set of two collage illustrations for a short story by Raphael Montes, published in the Brazilian magazine Superinteressante (May 2017). The work has that deconstructivist look, mixing different photogs and textures. The color palette also reinforces the look, and do pay a homage to the work of  the incredible Eduardo Recife (misprintedtype.com/).

The short story

An aspiring actress is, since her childhood, obsessed with being cast in a film by her dream director. With each new audition, she completely transforms herself into the character she wants to play – which escalates from taking antidepressants to prostitution, and even to a sex change operation. She’ll never get the part, but will keep trying as her life is tragically and comically ruined in the process.

Illustration