3Ds Max to Unity 3D export issues from the perspective of 3D designer

The most shocking thing after I started to create game assets is a huge part of the features of 3Ds Max and Maya are not supported in fbx export. And the only way to export a 3D model into a game engine is exporting the model as a fbx file. Static models like a building, a tree or a car etc. can be easily exported with materials. I had no problem with that. But other than “Skin“, “Physique” and “morpher“, wont be seen in the game engine. So you must do all the animations with bones and morpher targets.

And the other important thing is you should always “collapse all” by right clicking the modifier list just before exporting. Because for example if you want to export a model with turbo smooth, if you dont collapse the modifiers, turbosmooth wont be exported.

Advertisements

First year as a game artist

Past one year which I was working as a game artist in a game studio has taught me a lot of things. As the only artist in my studio, I have got many responsibilities. Before my professional carreer I always used to create my own, unique stuff. However, I have noticed that to release the game in time, it’s a good idea to take advantage of asset stores. So before a game we start to work, we always check asset store for (trees, cars, rocks etc.) as much as we can. It saves a lot of time and it lets you focus on more important things. Details are neccessary but not need to be totally unique if you are in a indie game studio.

It is important to choose right font. The font must be suitable for different languages in case of translation. Style must be fit on your game as well.

Teaser video of the game matters to make the game to be downloaded. The video must be released in social media or indie game blogs before the games publish. My favorite game teasers have in-game videos which show gameplay, as well as motion graphics and 2D or 3D animations according to the game. Keep in mind that teaser must be released weeks before the game. So the studio can reach as much gamers as possible.

Markets show the icon of the game as feature image and it is the first thing users will see. So the icon matters. It must be clear and must be able to be choosen among the others. Icon better to be designed seasonal-ready. For example in christmas you can be able to put a red hat on the icon.

A proffesional game designer I’ve met in a seminar recommended the “Agile Method” that means creating a playable version of the game immediately. It can be a walk on a line with your character or a car or even a box. Then you can improve graphics and gameplay later.

Creating a Railroad with Path Constraint and Snapshot Tool in 3DS Max

1

In this post i will explain how to use path constraint and snapshot tools to create continuous multiple objects. I am using this tools oftenly at work. For small scenes copy-paste could be easier to use but in huge scales snapshotting is much more time saver. I will post a few different renders below the explanation as example.

Before the start I created some kind of coal mine enter as you see above. Its only for the tutorial, I did not spend much time on it. Then I simply created a curved line starting from inside of the gate. It will be the path of our railroad.

1

Then I fit the line to the earth by playing with vertices. The earth plane has some ups and downs.

2

I created the wooden rail holder at the left side to put it below the rail.

 

 

 

4

Under the motion panel and assign controller drop down menu you will see position, rotation and scale. To assign a controller to transformer I selected position and pressed the assign controller button above the selection. After selecting path constraint from the list, it will be added to the object.

5

 

After adding path constraint, Path Parameters dropdown menu will show up. Under the menu Add Path button lets you choose which line will be followed by the selected object. I picked the path I created before. Usually the result is out of the rotation than how it must be look like. So I rotate it manually to find a position as I want. I recommend you to press follow button that I marked in the picture above before the manual rotation. Otherwise it will be unrotate again. Follow check lets rotate the object that controlled by path constraint on the way of picked line.

Now the object has a path animation. It can be seen by scrolling the timeline from begining to the end.

6

 

Snapshot can be reached under “Tools>Snapshot”. This tool can make a copy of the mesh within any single time or between a range in timeline. I have an animation of object that i want to copy in a range of time. So I checked Range and copied it 12 times as the lenght of my path.

7

The result is fine to me. I drew two lines more to create rails. And this is how it looks.

9

I also created the two pictures below. The one with city lamps is for this tutorial and the one with roller coaster is a product.

3

 

 

alan render3

 

Creating a 3D Drone

drone 3d model

I designed this concept based on my sketchs in the Codemodon Game Studio that I am currently working, for a commercial. I represented this vehicle as some part of a submarine and some part of a quadrocopter.

In this post I will explain the steps of creating this concept.

a

I started with this chamfer box with paramaters of 60x60x90 and 7 fillet. Increasing fillet segments is much more easy than adding turbosmooth or meshsmooth.

b

Then I added “FFD 2x2x2” modifier from modifier list. This modifier lets you to manipulate the mesh by as if the whole mesh is just a box. The submarine cabins roof is wider than the floor.

c

After giving the exact shape to the body, I divided the borders of glass and door with swift loop tool. “Swift Loop tool” makes easy many things. You can divide polygons with only one click. (Mark 1 shows the button of swift loop. In case if you dont see the panel which has swift loop tool, click to the button which is marked with 2, or your 3Ds Max version doesn’t have it)

d

Swift loop tool is availible only if you edit the mesh with “editable poly”. I detached the front window and the door just after dividing the edges with swift loop.

 

 

kabin

 

After detaching the door the steps that I follow explained above. I scaled down the door, I used boolean tool which is in “create>compound objects>boolean” to make an hole for a window on the door. At last I used shell modifier to make the door volumed.

h

Below of the vehicle is more primitive. I didnt used any complex shape. I created a construction with boxes and I added some details for the wings. I created some connection parts to make wings more realistic.

f

 

There are always many ways to create something in 3Ds Max. For the wings I followed the ways above. I draw a basic wing with line tool, extruded it and manipulated the shape with FFD 4x4x4 for making it look aerodynamic. If you add any material without using UVW, 3Ds Max will give you an error.

After that modifies the result of the construction is below.

4

j

 

I used the materials inside 3Ds Max. The name of the materials are above. I didn’t modified this materials. They come with 3Ds Max by default. After adding some details on door and adding materials the concept has done.

I took this render with Mental Ray.

I hope it was helpful. See you next time.

How to 3D Low Poly Style Landscape

 

In this post I will explain the tricks of low poly style landscape render with 3Ds Max.1I started the project by creating the plane for the ground base mesh. Its a simple almost square 20×25 segment plane. Then I converted to “Edit Poly” by right clicking the mesh.

3

After creating ground I heightened the hills and the mountains with “soft selection tool” which is in Soft Selection panel at right side.

5  When I create the mountain tops I increased the pinch value of the soft selection tool as you see in the picture at left. Pinch value make the vertices which is in the falloff area of the selection stronger or weaker. The graph below values must be seen like a mountain.

Tip: You can start to create mountains with a lower pinch and you can increase the value a little after.

 

6

I finally decided to leave the mountains like above. 9

After finishing the ground, mountains material have to be set up. I decided to paint mountain body to brown and top of the mountain to white. Due to there is only one mesh to paint 3 different materials, the best solution is to use “multi-sub object”. To use this kind of material, Polygon Material ID’s must be grouped. I left the polygons that will be grass to default 1, I set the mountain body to ID 2 and the mountain top to ID 3. It can be set in Polygon Material IDs in the Edit Poly tab. As you can see above. Before setting the IDs the polygons which will be grouped must be already selected.

7

 

I am using “smooth” modifier to harden the meshes. It can be selected in modifier list>smooth. If Auto Smooth is selected, decrease the treshold amount and the mesh will be like low poly style.8

To create the multi/sub-object, Open the Material tab (press M) then click the button which says “standart” which is shown in the first picture above. It will open a new window. Pick “Multi/Sub-Object”. As you see in the 3rd picture above there is a list of material slots. Due to polygon material groups which is I did before the ID groups of the material will paint them.

1st ID is green for the ground

2nd ID is brown for the mountain body

3rd ID is white for the mountain top

If the material IDs set correctly the mesh will be shown like the picture below.

123123

 

13

I created the trees in a very basic way. I created a cone, copied it 4 times and attached with a stick. I set the polygon material groups of the leaves to 2 and left the stick to default 1. I made a new multi sub object material and added it to the tree.clouds

Creating the clouds is a little bit tricky. I created a basic sphere with 16 segment then I used “pro-optimizer” modifier which is in the modifier list menu and I added “smooth” modifier to make it look low poly style. Just copied 3 times and variated it.

14

 

Stone is also created with the same modifiers.

 

 

To create a forest, copying and copying is not the best way. It takes time and it will be like un aligned by the ground with hills. I think the best way to make a forest is to using the “Object Paint Tool” which is above of the viewport screen. Before using this tool make sure the object that you want to copy is 1 mesh.

Press the button which is marked with the number “1” then click the tree mesh. Press the button which is marked with 2 and you can click to the ground where you want to create a tree. It will copy the tree where you will click. It is also aligned by the Axis “Z”. It means if you click the mountain the tree will not stay below the ground. If new trees are so big you can manipulate the values which is marked with “3” cyan color.

12

I put the stones with the same tools. I copied some clouds to the sky and added some details like the river, rainbow and stuff.

I Was In Arles How To

I Was In Arles from gunisigicihangir on Vimeo.

This is an artwork which I created as my graduation project for Marmara University-Istanbul. Digitalizing a classic artwork always excites me. While I was working on Microsoft Kinect that idea appeared in my mind. How great it would be to see unpainted areas in Van Gogh’s Bedroom painting. After the graduation exhibition in Marmara University, it also exhibited in amberFest 13′.

This work looks quite complicated but actually it is one of the simplest projects that I made.

I started by searching how to adding skeleton data taken by kinect into a Unity 3D project. I found a sdk which is released by Microsoft for Unity. You can download it from website below.

http://wiki.etc.cmu.edu/unity3d/index.php/Microsoft_Kinect_-_Microsoft_SDK

You will need to install kinect developer toolkit and kinect SDK too. Just after the download has finished, open the Unity3D and run “Kinect1.7UnityPackage.unitypackage”. Make sure all the packages are selected then press import. This will import a package consist of some codes and an example project.

1

We can work inside the example project by modifying it. When you import all the package you will see KinectSample in the Project window below. Full path is Assets>Scene>KinectSample.8-01

To create the feeling of looking at inside the picture I decided to create a main camera with a target point which is always looked at. Because if you dont use a target point the camera always look the same direction.

I found this code from reference tab from Unity3D’s website.

var target : Transform;

function Update() {
transform.LookAt(target);
}

I copied and pasted this codes as a javascript code in Unity and simply linked it into the camera by dragging and droping. You can create a Java Script file by right clicking in the project window and create>Javascript. You must see the component in inspector menu when you select the camera. Then I created a cube front of the camera for the target and attached it to the “target tag” of the component that i just created inside the camera. You can reach the target tag inside the inspector menu and you can add an object by clicking the circle beside it.

9

The distance between the camera and the target point is important to make the movement more natural. But it depends on the project.

5Second, I attached the camera to the “03_Head” inside the “KinectPointMan”. The project has 2 skeleton. rainbowMan_v06 and KinectPointMan. I used “PointMan” because the other one vibrating the camera while Point man is smoother.

 

 

 

 

To finalize the project delete the “rainbow man” which we didn’t use and move the camera until the KinectPointMan disappears from the screen. Then you can create your own scene to look inside. I would love to share my 3D model for Van Gogh’s bedroom but unfortunately it was erased with many project which I didn’t sync to cloud after the burned hard disc disaster.

I created a couple of cubes to realize the movement as you can see below. I preserved the skeleton just to show you my body movements.

7

 

You can manipulate the distance to see the difference.

I hope you enjoyed this tutorial. See you next time.

2D Character Animation With Adobe After Effects

This is a very short part of the video teaser of Şekermeker – Sugarmugar which is a game going to be released soon for Android and IOS. The game will be published by Codemodeon Game Studio which is I’am currently working as an art director. I will explain you how I created the teaser video with basic tools in After Effects.
creating the bodyThe characters in the video are exactly the same images as the one in the game. I started with seperating the joints and moveable parts of the characters such as legs, arms, eyes, eyebrow, head. Then I exported them to After Effects layer by layer.

1

After I get my images in the project panel next step is to create a new composition. I used the values below.

2

 

3

Next, drag and drop the images that insinde the project panel to composition panel below. The images will be over and over not accurately. So I needed to move the individual parts to the actual places.

4

The woman doesn’t have a mouth as you see above. That because the mouth needs to be created in After Effects as a vector. So we can move the control points to animate it look like she is speaking.

5

I created the mouth like above by using Pen tool. I made only 4 control point, so it is a very simple mouth. Pen tool must be used after creating a new shape layer. Otherwise it will react as if a mask.

11

To create motion I made a tween for the Shape Layer 1>Contents>Shape1>Path1. Its a very long path but easy when you familiar to it. After Effects works with keyframes. I presume that you alredy know how it works so I will not explain it.

7

To animate joints, I used puppet tool. It is a very usefull tool in After Effects. It lets us define joints and move them by click an release.

A usefull tip: you can Ctrl+click to a joint to make a realtime animation. If you click ctrl while you already clicked to puppet tool you will realize the cursor will be a clock. So it is ready to animate. Animation starts from the current time until the end of the composition time.

8

If you dont have a character, you can experience it with simple objects like boxes etc. Puppet tool is great for cartoon animations. It is simple but the result satisfies.

2D Cartoon Character Illustration

 

maskotlar

asdfasdf-14

Introduction

In this tutorial I want to show you how I created the little alien who is wearing oculus rift at left side. I created this character for the banner above which is I made for the company I am currently working for. I seperated the tutorial to a few steps.

Before The Start

I had to let the audience understand that we are basically working on virtual reality by using Oculus Rift in our products.

Oculus is a very magical tool to amaze people. And it seems like little bit futuristic. Hence, I decided to create aliens who are wearing Oculus Rift and looks amazed by it.

creating the body

Creating The Body

I strongly recommend you to make some sketch before starting your design. I made a few sketches on paper then I started to draw the body with pen tool in Adobe Illustrator.  In the third step of the picture above I decided the angle of axises of arms and legs, then I drew the legs freely. I am skipping the hands for a while.

creating the rift

 

Creating The Rift

Drawing of Oculus Rift is easy part of this tutorial. I only paid attention to make it more understandable and recognizable. Due to my alien has 6 eyes, he wears 3 goggles’.

drawing the hands

Drawing Hands

This step is a little bit advanced. To see this forms of hands, you may need some basic drawing courses. I made a couple quick sketches above. They are not great but always help.

I am giving the shadows and highlights according to the light I imagined before I’ve started. Upper sides are bright and lower sides are darker. It perceived like it is volumed.
facial express

Facial Expressions

This is an advanced step too. I collected mouth shapes above which I used on the other characters in the banner to make it clearer. However it is not enough to understand facial expressions. You will need to observe a lot. Even masters still observe.

When the first time I ever wear Oculus Rift basically I felt anxiety, amazement and mind blow. I tried to express this feeling upon that characters. First character above worried, second one is amazed and the last ones mind has blown.

 

tiny details

Details

Its always good to have some details like volumes, shadows, highlights and reflections in your illustrations. It makes the artwork looks better. And always keep in mind to be consistent when you draw the shadows and highlights. Best way to work on lighting is deciding the imaginary light source before painting the shapes. This will be very helpful.

I hope you enjoy this tutorial, see you soon.

Follow Up Advertising How To

Introduction

In the first post of my blog I will explain how I created the pressing advertisement project seen below.

Follow up Advertising from gunisigicihangir on Vimeo.

You will need:

  • Arduino
  • Cable (Approx. 30)
  • Power ( Arudino-PC usb connection or 2 9V batteries)
  • 2 Sharp GP2Y0A21YK0F Analog Distance Sensors
  • DC Motor Driver
  • DC Motor
  • Breadboard

The details will be shown in 3 different chapters.

Chapter 1

In the first chapter I connected sensors to Arduino. The sensors that I used have 3 different outputs which are power (5volt), ground (gnd) and analog output. It generates analog values according to measured distance between sensor and the target. The numbers decrease if there is nothing in the front of the sensor and increase when something has been captured. Otherwise, there is a capture distance as well. It is between 30cm to 2 meters long in my sensor.

The sensor can be connected to the 5V output of Arduino if it is connected to a pc directly with USB connection. However you can feed Arduino by an external power supply as you can see in the example.

 

Analog output should be connected to the analog input of Arduino. They marked with an “A” before the number like A0 A1 A2 A3… For the codes that I shared, you need to connect the analog output to A0 pin on Arduino or you can just edit the codes.

sensor-connection

If you have connected the wires as above, its time to copy the codes to Arduino software.

int sensor1 = 0;
int val = 0;

void setup()
{

Serial.begin(9600); // setup serial

}
void loop()
{
val = analogRead(sensor1); // read the input pin
Serial.println(val); // debug value
}

serial monitor sensors

If you did the connections between arduino and sensors correctly, you should see the numbers flowing in serial monitor. (Toolbar>tools>serial monitor or Ctrl+shift+M)

Congrats, you succeeded the first part of the project.

 

 

 

Chapter 2

In this chapter I will explain how to connect a dc motor via motor driver to Arduino. I used a common dc motor for the project. It has only two power outputs.

Driving the motor with arduino is not as simple as connecting the sensors. We need to use a motor driver. The driver that I use is Pololu md05a. Unfortunately it is out of production now but basically they all are the same.

Here is the schema;

motor-connection

 

We have 2 batteries here, but you can also use usb connection to Arduino. So you will not need to use the battery which is connected to Vin input on Arduino.

As you can see, motor driver is seperated by two sides. At the right side, OUT 1A, OUT 1B are connected to outputs of motor. This side is only for feeding the power needed by the motor. Vin and GND is connected directly to the battery. At the left side there are pins for making connection to Arduino.

1DIAG/EN is Enable pin. It needs to be connected to 5 volt. So it will be able to work.

1INa,1INb are logic inputs of motor driver. We use them for direction of spinning.

1PWM is for speed and torque of spinning.

Vin and GND are power and ground as we have seen before. Vin which is feeding 1INa, 1INb and 1PWM must be connected to 5 volt.

If all the connections are O.K. you can copy and paste the code below.

 

int IN1 = 2;
int IN2 = 4;
int D2 = 3;

void setup()
{

pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(D2, OUTPUT);
analogWrite(D2, 100);
}
void loop()
{
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
}

 

If you see the motor is spinning its done. You can manipulate the code by changing the values of digitalWrite lines or changing the number of analogWrite line-100 is the speed of motor. You can increase or decrease it between 0-255-.

Chapter 3

In the last chapter, we will complete the project by connecting previous chapters. Actually this chapter is more like logic background of the project. Lets have a look on the schema below.

sensors-01

 

This scheme shows the condition differences in individual scenerios.

In the first condition left side sensor finds a target, right sensor finds nothing. So the motor must spin to the direction of left sensor. It is the counter clockwise. According to second condition left sensor  has nothing to seek, however right sensor has a new target. Motor must spin through the right sensor despite of the previous condition. In condition 3, both sensor find target. We can’t be sure about the targets movement and best thing to do is waiting until one of the sensors lose its target. This condition usually happens because of two or more people is on the area. Last condition happens if both sensors have no target. So there is nothing to worry about.

If its clear we can start to prepare Arudino for the project.

sensor+motor-connection

 

The picture above leads us to make connections for the last time. It is the same as the examples we have seen before. I will not repeat the steps, we can go directly to the codes.

int sensor1 = 0;
int sensor2 = 1;
int val = 0;
int val2 = 0;
int IN1 = 2;
int IN2 = 4;
int D2 = 3;
void setup(){
 Serial.begin(9600);
 pinMode(IN1, OUTPUT);
 pinMode(IN2, OUTPUT);
 pinMode(D2, OUTPUT);
  analogWrite(D2, 25);
 }
void loop(){
 val = analogRead(sensor1);
 val2 = analogRead(sensor2);
 if ((val > 100)&&(val2<100)) {
  digitalWrite(IN1, LOW);
 digitalWrite(IN2, HIGH);
 }
 else if ((val < 100) && (val2>100)) {
  digitalWrite(IN1, HIGH);
 digitalWrite(IN2, LOW);
 }
 else {
  digitalWrite(IN1, LOW);
 digitalWrite(IN2, LOW);
 }
 Serial.println(val2);
 delay(100);
}
I added only the “if statement” to the codes. It performs the conditions which is in the first schema of the chapter. It runs like “if val(sensor1) higher than 100 and the val2(sensor2) is lower than 100 spin clockwise or if val(sensor1) is lower than 100 and val2(sensor2) is higher than 100 spin counter clockwise, else, do nothing.)

 

I hope you like this tutorial. See you until next time.