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


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.


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


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





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.



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.



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.


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


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.




alan render3



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.

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.


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() {

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.


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.



You can manipulate the distance to see the difference.

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

2D Cartoon Character Illustration





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


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


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.


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;



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.



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.



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(){
 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);
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.