Subscribe: federico.cascinelli.blog
http://fcascinelli.blogspot.com/feeds/posts/default?alt=rss
Preview: federico.cascinelli.blog

federico.cascinelli.blog



pensieri, parole, opere e omissioni di un "characteraccio animator"



Last Build Date: Tue, 12 Sep 2017 07:22:35 +0000

 



Unreal Engine 4.14 w.i.p. - flying vehicle

Mon, 09 Jan 2017 00:36:00 +0000

 "Flying Vehicle" is a personal project done in my spare time while studying game engines and VR.All "BluePrints" are built from scratch without using presets for the sake of learning.. allowfullscreen="" frameborder="0" height="360" mozallowfullscreen="" src="https://player.vimeo.com/video/198610745" webkitallowfullscreen="" width="640">federico cascinelli - UE4 w.i.p. projecc from Federico Cascinelli on Vimeo..building blueprints Underneath the vehicle "static mesh" has been created four points, the "hovering points" that check for the distance of the vehicle from the ground. These points are built in a "scene components" blueprint and then added to the "pawn" blueprint.The 4 images below are actually one single blueprint, the "scene components" one, and they represent the algorithm that checks for the ground distance/hit.Two float variables are added: "trace length" and "anti-G" (pretty simple explanatory)The IF condition (UE branch node) checks for the distance from the ground. If it's higher of the value set in the condition (in this case 46) means the "pawn" is flying and assign different physics behaviours. . In the "pawn" blueprint the "hovering points" are initialised as follow..WASD/IJKL basic moments All movements are under the condition of the "antiG switch", only when is active player would able to move up and down as well as shifting left to right without turning. The switch is also used for landing and take off. anti-Gravity "switch".cheersfc[...]



technical director reel 2016

Sat, 26 Mar 2016 08:03:00 +0000

allowfullscreen="" frameborder="0" height="281" mozallowfullscreen="" src="https://player.vimeo.com/video/160417790" webkitallowfullscreen="" width="500">fedrico Cascinelli - TD reel 2016 from Federico Cascinelli on Vimeo.Reel total time - 04:02films:@ 00:05 Iron Man 2 - rigging & animation@ 00:09 Iron Man 3 - animation, rigging & rotomation@ 00:29 The Finest Hours - rigging, shaping and animating waves + crowd tool & ragdoll dev + mocap TD@ 00:36 King Arthur - ice breaking animation & camera + crowd agents setupnCloth skins RnD@ 00:59 rbd skin destruction, peeling full breakdown : vimeo.com/album/27607/video/110157354@ 01:36 touch & pinch full breakdown : vimeo.com/album/27607/video/119139502Maya generalist TD @ 02:17 AI agent RnDfull breakdown : vimeo.com/album/27607/video/113905373 @ 02:38 Maya procedural modellingfull breakdown : vimeo.com/album/27607/video/109139500@03:03 ice breaking MEL tool devMy filmography also include (not in this reel):The Great Wall - animator - ILMThe Lake - Maya, Houdini fx td - RISE FXPirates - previz artist (first act sequence) - AardmanThe Day the Earth Stood Still - previz artist (spaceship landing sequence + final sequence) - Image Enginethanks for watching and please follow the links below for more works reel and personal infos:vimeo.com/album/27607fcascinelli.blogspot.itlinkedin.com/in/fcascinelliimdb.com/name/nm1863655/?ref_=fn_al_nm_1 fc[...]



last few doodles

Sat, 25 Jul 2015 05:25:00 +0000








MEL scripting - array decreasing procedure with random selection

Fri, 26 Jun 2015 06:03:00 +0000

I'm sharing a small algorithm I developed for the last production I've been working on. I needed to randomly select characters in a scene and assign a value, but I wanted to avoid to occasionally select twice the same character.

This procedure randomly select an element in an array and delete it so that the array size decrease until all elements are gone and the array is empty.

--

proc randDecreasArray(){
    
    string $arr[] = {"a","b","c","d","e","f","g"};
    string $nwArr[] = $arr;

    int $sz = size($arr);
    int $rm = $sz;

    $prntArr = stringArrayToString($arr, ".");
    print ($prntArr + "\n");

    for ($i in $arr){

        int $rnd = rand(0, $rm);
    
        $nwArr = stringArrayRemove ({$nwArr[$rnd]},$nwArr);
        $rm --;
    
        $prnt = stringArrayToString($nwArr, ".");
        print ($prnt + "\n");

    }

}

randDecreasArray()

--

cheers
f.




2014 film reel

Sat, 14 Feb 2015 23:32:00 +0000

allowfullscreen="" frameborder="0" height="281" mozallowfullscreen="" src="//player.vimeo.com/video/119652948" webkitallowfullscreen="" width="500"> federico's film reel 2014 from Federico Cascinelli on Vimeo..Reel total time - 02:05@ 00:05Charlie and Chocolate Factory - keyframe animation @ 00:14Iron Man 2 - rigging & animation @ 00:24X Men iii - animation & rotomation @ 00:50King Arthur - ice breaking animation & camera + crowd agents setup@ 01:1510.000 BC - keyframe cycles animation & shot creation @ 01:33Iron Man 3 - animation, rigging & rotomation @ 01:53Harry Potter 4 - keyframe animationMy filmography also include (not in this reel):Aardman's Pirates - previz artist (first act sequence)The Day the Earth Stood Still - previz artist (spaceship landind sequence + final sequence).[...]



nCloth Dynamic Skin

Mon, 09 Feb 2015 17:30:00 +0000


allowfullscreen="" frameborder="0" height="281" mozallowfullscreen="" src="//player.vimeo.com/video/119139502" webkitallowfullscreen="" width="500">

(tutorial in progress...)

.




Dynamics Agent Intelligence Crowd System

Mon, 08 Dec 2014 12:56:00 +0000



allowfullscreen="" frameborder="0" height="281" mozallowfullscreen="" src="//player.vimeo.com/video/113905373" webkitallowfullscreen="" width="500">
Dynamic Agent Intelligence Crowd System from Federico Cascinelli on Vimeo.

.


D.A.I.C.S. is a Maya custom tool I develop in the autumn 2014 using MEL scripting and Maya expressions.

In this first version agents are Maya RBD Objects based on the famous game "RISIKO" and they can interact with other agents via the line of fire and the pointer using particle collisions. 

The first collision checks if the tank detected is a friend or an enemy and based on the result they decide if to fire or not.

An expression control the direction and movements of each single agent; a second expression is created once the particles collide with the enemies and control that the bullet hits the tank. If the collision is true the tank is deleted and remain in the scene as an inactive RDB object, if the collision doesn't happen, once the particle dies, the "fire system" is reseted.

f




Fox Sports

Wed, 12 Nov 2014 07:41:00 +0000

allowfullscreen="" frameborder="0" height="270" mozallowfullscreen="" src="//player.vimeo.com/video/107631818?title=0&byline=0&portrait=0" webkitallowfullscreen="" width="500">

director: Max Rocchetti
vfx: EDI, Milano



Happy Halloween :)

Fri, 31 Oct 2014 14:37:00 +0000



allowfullscreen="" frameborder="0" height="281" mozallowfullscreen="" src="//player.vimeo.com/video/110579767" webkitallowfullscreen="" width="500">
acid rain fx (SOUP bounding obj + particle) from Federico Cascinelli on Vimeo.


acid rain fx is obtained using particles as input geometry into SOUP's attributeTransfer bounding object.

here are the connections for attributeTransfer chain:

. (pumpkin).worldMesh[0]-> attributeTransfer.inGeometry
. attributeTransfer.outWeightPP -> point.inWeightPP
. attributeTransfer.outGeometry -> point.inGeometry
. point.outWeightPP -> arrayMapper.vCoordPP
. arrayMapper.outValuePP  nComponents.glueStrengthPerVertex
. arrayMapper.outValuePP  nComponents.strengthPerVertex
. arrayMapper.outValuePP  nComponents.weightPerVertex



here are the connections for bounding object:

. particleShape.worldPosition -> boundingObjectShape.inParticlePositionPP



nodes set-up:

attributeTransfer - weight
point - weight
nComponents - strength, glue, weight -per vertex
bounding obj -  shape - input geometry
bounding obj - weight falloff - 1 (constant)
bounding obj - initialize point attribute radius - (the one you like)



reference:
http://mayaspiral.blogspot.it/2012/06/soup-deforming-mesh-with-particles.html



dynamic skins in MAYA

Tue, 28 Oct 2014 14:53:00 +0000

dynamic skin in MAYA allowfullscreen="" frameborder="0" height="281" mozallowfullscreen="" src="//player.vimeo.com/video/110157354" webkitallowfullscreen="" width="500"> SOUP dynamic skin destruction in MAYA from Federico Cascinelli on Vimeo.Dynamic skins has been a personal challenge for a long time and this tutorial represent the final result of my studies based on both on Maya and Houdini experience.I found a couple of different ways to simulate dynamic skins and what I present here is the one I think it's easier to apply in any circumstance.The accidental meet with Peter Shipkov's SOUP plug-in for Maya (thanks to an ex-collegue Maurizio Giglioli) changed my way to approach Maya in general giving a more Houdini like workflow in a familiar environment, at least to me. The research did in Houdini also allowed me to have a different point of view of all the nodes connections.Trying to cut as much as possible of what it should be a very long tutorial, if started from scratch, it came out as an advanced technical lecture so that you should already have a good knowledge of Maya, hypershde and/or node editor, connection editor and, of course, SOUP.Here enclose at the bottom you find a Maya scene file with a very simple example so that you might be able to better understand the nodes connections. in any case feel free to contact me if something doesn't have sense or does not work.used nodes:. SOUP attributeTransfer. SOUP point. Maya arrayMapper. Maya nComponents (look for it in the cloth network)how I did it:1. create a polygonal cylinder2. make a copy and break it (both using Maya procedure SplitVertex or Soup's shatter or any other way you like)3. make the broken cylinder a cloth object4. constraint the original cylinder and the cloth one with nConstraint component to component.5. skin the original cylinder.in the hypershade or the node editor:6. load the cloth network and add the extra nodes7. set up the SOUP nodes to pass weights8. attach a B&W 2d ramp to the arrayMapper9. Connect the SOUP point passing the outWeightPP to vCoordPP of the arrayMapper10. connect the arrayMapper to the nComponents (note that the nConstraint has created two nComponents... you have to use the cloth one) passing the outValuePP to nComponent glueStrengthPerVertex - weightPerVertex - strengthPerVertex (3 connections)11. create a bounding object for the SOUP attributeTransfer nodein the attribute editor:11. set up the nComponent node by setting the glue strength, weight and strength  to "per vertex"12. set the bounding object weight value to constant 113. set the dynamicConstraint glue value less then one (0.99 would be fine)all should be fine by now!few notes… . be sure to set up all the nodes correctly!!!. try to leave the glue value to 1… fun effect!!!. combinations are almost infinite… try using more then one bounding object… or play with glue, force and strength values… have fun!!!. connecting the dynamic skin chain to the cloth object after the nClothShape you will use the actual skin as object to apply the effect to… if you link the cloth before it you will use the original object as reference… this is a very important step to understand and linking one or the other is the same just depend on the kind of effect you want to achieve. I'm working on an old mac air 11… so all the self collisions and other setting that require good memory are disabled . you can change the cloth geo by simply connecting the new geo to the cloth shape node and the attribute transfer node.bug. not sure is a bug… but to me, every time I reopen the file I have to reset the bounding object weight!! You should do it also on the file attached.maya filethat's all folks!!!I hope this might be useful and understandable... feel free to contact me...f[...]



MDA procedural modelling

Thu, 16 Oct 2014 15:32:00 +0000

Basic workflow with SOUP plug-in in Maya… Procedural Modelling allowfullscreen="" frameborder="0" height="281" mozallowfullscreen="" src="//player.vimeo.com/video/109139500" webkitallowfullscreen="" width="500"> SOUP & MDA basic procedural modelling from Federico Cascinelli on Vimeo.   1. create a polygonal cylinder and make it thin using the creation node Use the creation node and not the trans/rot/scale manipulator or remember in this case to connect the worldmesh instead of the outMesh later in the connection between nodes… outMesh consider the bounding box object coordinates.2. create a cube and place the pivot at the bottom so to scale it only in the positive direction. model it in the shape of a column.I moved the vertices up instead of moving the pivot otherwise the scaling would take place from the original pivot in the instances. Doing that you have to be careful of any other edit you'll do on the geo.3. create an instancer node and place the column inside.4. open the hypershade and place the nodes we will use in the correct order:. the cylinder. a soup group. a Maya deleteComponent node . a soup point. a soup arrayToDynamicArray. the Maya instacer5. make the connections:. first pass geometry from the cylinder to group. then pass geometry and components to the delete node. pass geo and deleteComponents to point. take the outPositionPP position of points and pass it to the array. and last connect the outArray to inputPoints.6. setup the nodes to make the connection work:. first select the point node and be sure the "use components menu" is set to "input component list". then go to position and "enable" it. into the dynamic array node type "position"this will make the connections work properly… the problem now is that without anymore instructions an instance is placed on every point of the geometry... that's why we need the deleteComponent node.7. to make it work:. go to group into component type menu select edges. the input components menu set to none. scroll down and create a bounding object. make it as a cube and size it to fit the cylinder. place it so that it covers just the bottom f the cylinder.8. scale the instance node a bit just to make it nicer with the columns inside the cylinder shape.and here it is… it works9. we have an expression that drives few channels:. first the high of the column drives the pipe position y. the segments of the cylinder drives segments of the pipe and the cone. cylinder radius drives the cone and pipe radius. at last a couple of lines to keep proportions of the pipes thickness and column thickness when change the radius.10. create the asset:. select the objects you want the channels to be published on the asset. and press the asset create button in the hypershade. in the channel box highlight the channels you like and go on edit publish to the asset.for more infos about Soup plug-in,  Maya Digital Asset and ref materials:SOuP is a plugin for Maya, originally developed by Peter Shipkov. http://www.soup-dev.com/ http://www.petershipkov.com/http://www.tokeru.com/mayawiki/index.php?title=Souphttp://mayaspiral.blogspot.comMaya Assethttps://www.youtube.com/watch?v=ym9VIKB0tXIf[...]



surf

Sat, 02 Nov 2013 16:45:00 +0000





anatomy study (female legs)

Sat, 10 Aug 2013 21:27:00 +0000


.





la vergine e il telefono

Sat, 20 Jul 2013 18:05:00 +0000






il cristo sulla panchina

Fri, 19 Jul 2013 13:41:00 +0000




la vergine e il libro

Mon, 15 Jul 2013 20:06:00 +0000




new old man (update)

Fri, 31 May 2013 23:11:00 +0000


.






black sushi

Fri, 24 May 2013 15:22:00 +0000





anatomy study (update)

Fri, 24 May 2013 00:22:00 +0000





hand study

Tue, 21 May 2013 15:45:00 +0000






reel 2013

Thu, 09 May 2013 16:35:00 +0000






bike

Tue, 07 May 2013 17:02:00 +0000




monkey (update)

Mon, 06 May 2013 16:32:00 +0000




me (updated)

Thu, 02 May 2013 14:24:00 +0000




vecchietto (updated)

Sun, 28 Apr 2013 16:40:00 +0000