Friday, 26 August 2016

Welcome to ITEC 612-613: Your Journey into Computer Graphics Begins!

Computer Graphics - COURSE SPECIFICATION

Hello future graphics pioneers! Welcome to ITEC 612-613, your gateway to the fascinating world of Computer Graphics. Ever wondered how the stunning visuals in your favorite video games are created? Or how animated movies bring characters to life? This course is your first step toward answering those questions and building the skills to create your own digital worlds.

Wednesday, 17 August 2016

Multimedia Technology - Chapter 1- Introduction to Multimedia

Multimedia Technology: Your Gateway to the Digital World

Chapter: 1 

Chapter Title: Introduction to Multimedia

Multimedia Technology Lecture 1 | Introduction to Multimedia | Elements of Multimedia | 2D 3D


Hey everyone, and welcome to the first lecture of our Multimedia Technology course! I'm Dr. Zeeshan Bhatti, and I'm thrilled to be your guide on this journey. If you've ever been mesmerized by a video game's cutscene, binge-watched a series on a streaming platform, or learned a complex skill through an interactive online tutorial, then you've already experienced the power of what we're about to study. Over the next few weeks, we're going to pull back the curtain on the digital magic. We'll move from being passive consumers to informed creators, understanding the very DNA of the digital experiences that shape our world.

Tuesday, 16 August 2016

Multimedia Technology : Chapter 2 - Graphics and Images

Multimedia Technology: Chapter: 2

Graphics and Images

Multimedia Technology Lecture 2 | Introduction to Multimedia | Graphic Designing Tools

Welcome back, future multimedia masters, to another session at Zeeshan Academy! I'm Prof. Dr. Zeeshan Bhatti, and I hope you've been observing the digital world with a more critical eye since our first lecture.

Sunday, 7 August 2016

What Goes in a Research Paper? Your Blueprint for Writing a High-Impact Article

What Goes in a Research Paper? Your Blueprint for Writing a High-Impact Article

Research Paper

Hello, future researchers and scholars! Professor Dr. Zeeshan Bhatti here from Zeeshan Academy.

In my years of mentoring students, one question pops up more than any other: "Professor, I have all this data and I've done the work, but I just don't know how to write the paper!"

Saturday, 14 May 2016

IT Project Management Chapter 6 Project Implementation

IT Project Management Chapter 6 Project Implementation


Project Implementation Model

Getting the implementation phase right the first time is crucial for any  project manager or project team. This chapter offers guidelines for successfully implementing a project and ensuring that all relevant areas  have been addressed. Remember that everything the project team  planned, developed, and changed throughout the project life cycle is now ready for implementation. Implementation, in a nutshell, refers to the efficient transfer of the project into the client's "live" production environment.

Tuesday, 10 May 2016

Computer Graphics Problem Solution: A Deep Dive into 2D Transformation

Computer Graphics Problem Solution: A Deep Dive into 2D Transformation

2D Transformation in Computer Graphics | 2D Translate Rotate object in Computer Graphics 🎮09

Hello and welcome, future graphics programmers! Professor Dr. Zeeshan Bhatti here from Zeeshan Academy. Today, we're rolling up our sleeves and tackling a problem that beautifully combines three fundamental pillars of 2D transformation: Shearing, Translation, and Rotation.

If you've ever wondered how objects move, twist, and reshape in digital space, you're in the right place. This isn't just about memorizing formulas; it's about understanding the journey a simple object takes through the magical world of linear algebra. So, grab a coffee, and let's get started!

Saturday, 23 April 2016

IT Project Management: Chapter 5 Risk Management

IT Project Management: Chapter 5 

Risk Management

Risk
Uncertain or chance events that planning can not overcome or control.
 

Risk Management

A proactive attempt to recognize and manage internal events and external threats that affect the likelihood of a project’s success.
What can go wrong (risk event).
How to minimize the risk event’s impact (consequences).
What can be done before an event occurs (anticipation).
What to do when an event occurs (contingency plans).

Risk Management’s Benefits

A proactive rather than reactive approach.
Reduces surprises and negative consequences.
Prepares the project manager to take advantage of appropriate risks.
Provides better control over the future.
Improves chances of reaching project performance objectives within budget and on time.

Managing Risk

Step 1: Risk Identification
Generate a list of possible risks through brainstorming, problem identification and risk profiling.
Macro risks first, then specific events

Step 2: Risk Assessment
Scenario analysis for event probability and impact
Risk assessment matrix
Failure Mode and Effects Analysis (FMEA)
Probability analysis
Decision trees, NPV, and PERT
Semiquantitative scenario analysis

Step 3: Risk Response Development
Mitigating Risk
Reducing the likelihood an adverse event will occur.
Reducing impact of adverse event.
Avoiding Risk
Changing the project plan to eliminate the risk or condition.
Transferring Risk
Paying a premium to pass the risk to another party.
Requiring Build-Own-Operate-Transfer (BOOT) provisions.
Retaining Risk
Making a conscious decision to accept the risk.

Download: https://www.scribd.com/doc/310174502/IT-Project-Management-Chapter-5-Risk-Managemnt

IT Project Management: Chapter 4 Resource Plan and Cost Estimation

IT Project Management: Chapter 4 Resource Plan and Cost Estimation

Assigning Resources

A schedule is not complete until all the resources necessary to complete the project have been committed or assigned.
  • Non-Labor Resources
  • Lab time
  • Facilities
  • Prototype parts/systems
  • Equipment
  • Materials

The Resource Problem

Resources and Priorities, Project network times are not a schedule until resources have been assigned.The implicit assumption is that resources will be available in the required amounts when needed. Adding new projects requires making realistic judgments of resource availability and project durations.Cost estimates are not a budget until they have been time-phased.

Resource Smoothing (or Leveling)
Involves attempting to even out varying demands on resources by using slack (delaying noncritical activities) to manage resource utilization when resources are adequate over the life of the project.

Resource-Constrained Scheduling
The duration of a project may be increased by delaying the late start of some of its activities if resources are not adequate to meet peak demands.

Types of Project Constraints

Technical or Logic Constraints
Constraints related to the networked sequence in which project activities must occur.
Physical Constraints
Activities that cannot occur in parallel or are affected by contractual or environmental conditions.
Resource Constraints
The absence, shortage, or unique interrelationship and interaction characteristics of resources that require a particular sequencing of project activities
Kinds of Resource Constraints
People, materials, equipment


Download: https://www.scribd.com/doc/310174497/IT-Project-Management-Chapter-4-Resource-Plan-and-Cost-Estimation

Tuesday, 19 April 2016

Computer Graphics Hands-On Lab: Implementing 2D Transformations in C++


Computer Graphics Hands-On Lab: Implementing 2D Transformations in C++ 

By: Dr. Zeeshan Bhatti


Solving 2D Transformation problem in Computer Graphics | 2D Translate Rotate Matrices Problem 🎮10

Artificial Intelligence: Chapter 5 - Machine Learning - The Art of Learning from Experience

Artificial Intelligence: Chapter 5 - Machine Learning - The Art of Learning from Experience


Hello and welcome back, everyone! Professor Zeeshan Bhatti here from Zeeshan Academy. We've come a long way. We've built agents that can search for solutions and reason with knowledge. But until now, their intelligence was largely hand-crafted. We, the programmers, had to provide the rules, the facts, and the heuristics.

Artificial Intelligence: Chapter 4 - Introduction to Knowledge Base Systems

Artificial Intelligence: Chapter 4 

Introduction to Knowledge Base Systems

Welcome back, class! Professor Zeeshan Bhatti here from Zeeshan Academy. In our last chapter, we equipped our agents with the power of problem-solving and search, allowing them to navigate state spaces and find paths to their goals. But those agents were a bit... naive. They viewed the world in simple, atomic chunks without any real understanding.

Sunday, 17 April 2016

Computer Graphics, Chapter 4: The Magic of 2D Geometrical Transformations

Computer Graphics, Chapter 4: The Magic of 2D Geometrical Transformations

By: Prof. Dr. Zeeshan Bhatti

2D Transformation in Computer Graphics | 2D Translate Rotate object in Computer Graphics 🎮09

Welcome back, digital creators! Professor Dr. Zeeshan Bhatti here from Zeeshan Academy. Today, we're unlocking one of the most fundamental and visually intuitive concepts in computer graphics: 2D Geometrical Transformations.

Saturday, 16 April 2016

Artificial Intelligence Chapter 3: Problem Solving and Searching - The Agent's Roadmap

Artificial Intelligence Chapter 3: Problem Solving and Searching - The Agent's Roadmap

Meta Description: Master AI Problem Solving and Search in Chapter 3 with Prof. Dr. Zeeshan Bhatti. Understand state space, uninformed search (BFS, DFS), and informed search (A*) to build intelligent, goal-driven agents.
state space graph

Sunday, 10 April 2016

IT PROJECT MANAGEMENT: Chapter 3_ Project Estimating Techniques and Tools

IT PROJECT MANAGEMENT

Project Estimating Techniques and Tools

Chapter 3

ITPM Process

PROJECT PLAN CONTENTS

In this chapter we will be discussing Statement of work (SOW), Work breakdown structures (WBS), Responsibility assignment matrices, Project schedule, Resource plans/histograms, Budget, Risk management plan, Communications plan, Quality plan, Verification and validation plan.

PROJECT NOTEBOOK

  • Project Pre-plan
    • Background information
    • Customer data
    • Third-party data (vendors, suppliers, etc.)
  • Project Plan
    • Statement of Work (SOW)
    • Work Breakdown Structure (WBS)
    • Organization/responsibility charts
    • Schedule data
    • Budget/capital plan
    • Risk management
  • Project Implementation
    • Meetings (agenda/minutes)
    • Team/management/customer/third party progress reports
    • Customer change requests/decision matrix issue resolution forms/reports

  • Project Close-out
    • Final evaluation of measurable success indicators
    • Close-out meeting (agenda/minutes)
    • Final project report
    • Reference letters
    • Lessons learned
  • Project Administration
    • Contractual documents
    • Invoices
    • Expenses
    • Correspondence
    • Contact log 

      Further in this chapter we will be discussing each of the components regarding a project planning and management. All these are necessary features to design a successful project. 
ITPM Road Map


IT Project Management - Chapter 3 Project Estimating Techniques and Tools

Computer Graphics, Chapter 3: Solid Area (Polygon) Filling

Computer Graphics Demystified: Solid Area Polygon Filling and the Inside-Outside Test (Chapter-3)

- By: Prod. Dr. Zeeshan Bhatti

Bresenham Circle Drawing Algorithm in Computer Graphics | Circle Drawing using Algorithm 🎮07 Part-1

Hello and welcome back, future graphics experts! Professor Dr. Zeeshan Bhatti here from 
Zeeshan Academy. Today, we're tackling a fundamental question that sits at the heart of every digital image: How does a computer know which pixels to color inside a shape?

Monday, 28 March 2016

Computer Graphics Hands-On Lab: Mastering Circle Drawing Algorithms in C++

Computer Graphics Hands-On Lab-2: Mastering Circle Drawing Algorithms in C++
By: Dr. Zeeshan Bhatti 

Focus Keyword: Circle Drawing Algorithms

Master the art of drawing perfect circles in computer graphics! This lab project by Dr. Zeeshan Bhatti guides you through Polynomial and Bresenham's Circle Algorithms in C++, with 7 practical tasks to build your skills.

Bresenham Circle Drawing Algorithm in Computer Graphics | Circle Drawing using Algorithm 🎮07 Part-1

Computer Graphics Hands-On Lab: Mastering Line Drawing Algorithms in C++ - DDA vs. Bresenham

Computer Graphics Hands-On Lab-1 : Mastering Line Drawing Algorithms in C++ - DDA vs. Bresenham

Focus Keyword: Line Drawing Algorithms

Instructor: Dr. Zeeshan Bhatti

Polynomial Method Line Drawing in Computer Graphics | How to Draw Line using DDA algorithm in CG 🎮04

Lab Objectives

Welcome to your first computer graphics lab! This foundational session introduces you to the core problem of raster graphics: how to draw a straight line on a pixel-based display. By the end of this lab, you will:

Sunday, 27 March 2016

Computer Graphics using Java: Java Graphics Programming Lab: Mastering 2D Shapes and Geometric Primitives

Computer Graphics using Java: Java Graphics Programming: Mastering 2D Shapes and Geometric Primitives using JAva 

By: Dr. Zeeshan Bhatti

Basics of Computer Graphics | What is Computer Graphics | Computer Graphics full Course Urdu  🎮02

The Java 2D™ API provides several classes that define common geometric objects such as points, lines, curves, and rectangles. These geometry classes are part of the java.awt.geom package.

Saturday, 19 March 2016

Autodesk Maya Tutorial: Mastering Set Driven Key for Advanced Rigging

Autodesk Maya Tutorial: Mastering Set Driven Key for Advanced Rigging


Welcome back, animators and riggers! I'm Prof. Dr. Zeeshan Bhatti, and today on Zeeshan Academy, we're diving into one of the most powerful and versatile tools in the Maya rigging artist's toolkit: Set Driven Key (SDK).

If you've ever wanted to create complex, intuitive relationships between attributes—like having a character's brow furrow automatically when they raise their eyelids, or building a clean control panel for facial expressions—then this tutorial is for you. We'll not only learn how to use SDKs to build a simple facial rig but also how to create a custom GUI to control it all, using the very MEL scripts you provided.

What is a Set Driven Key?

Forget the traditional concept of keyframing animation over time. A Set Driven Key establishes a relationship where the value of one attribute (the "Driver") directly controls the value of another attribute (the "Driven").

Think of it like a gear system:

  • Driver: The gear you turn.

  • Driven: The gear that turns as a result.

In our case, we'll create a slider that drives the rotation of a character's jaw bone. This allows for non-linear, customizable control that is essential for sophisticated character rigs.

Part 1: Building a Jaw Rig with Set Driven Key

Let's start with a practical example: opening and closing a character's mouth.

Step 1: Create the Control and the Geometry

  1. Create a simple polygon cube. Scale it to resemble a head. This is our "Head_Geo".

  2. Create a NURBS circle (Create > NURBS Primitives > Circle). This will be our control. Name it "Jaw_CTRL".

  3. Place the Jaw_CTRL in front of the face. Freeze its transformations (Modify > Freeze Transformations).

Step 2: Create the Jaw Joint

  1. Switch to the Rigging menu set.

  2. Create a joint (Skeleton > Create Joints). Click once for the root (at the pivot of the head) and again near the bottom of the "mouth" for the jaw tip. Press Enter. Name it "Jaw_Joint".

  3. Parent the Jaw_Joint to the Jaw_CTRL (Select Jaw_Joint, then Shift-select Jaw_CTRL, press p).

Step 3: Skin the Geometry

  1. Select the Jaw_Joint, then Shift-select the Head_Geo.

  2. Go to Skin > Bind Skin > Smooth Bind. Now, when you rotate the joint, the geometry should deform.

Step 4: The Magic - Setting the Driven Key
Now, we'll make the control's translate Y drive the jaw's rotation.

  1. Open the Set Driven Key window: Animate > Set Driven Key > Set...

  2. Load the Driver:

    • Select the Jaw_CTRL.

    • In the SDK window, click Load Driver.

    • On the right, you'll see its attributes. Select translateY.

  3. Load the Driven:

    • Select the Jaw_Joint.

    • In the SDK window, click Load Driven.

    • On the right, select the rotateX attribute (assuming this is the axis that opens the mouth).

  4. Set the First Key (Mouth Closed):

    • Ensure the Jaw_CTRL is at its original position (translateY = 0).

    • Ensure the Jaw_Joint is not rotated (rotateX = 0). This is the closed mouth state.

    • In the SDK window, click Key. You've set the first relationship: translateY 0 drives rotateX 0.

  5. Set the Second Key (Mouth Open):

    • Move the Jaw_CTRL upward on the Y-axis (e.g., translateY = 5).

    • Rotate the Jaw_Joint on the X-axis to open the mouth (e.g., rotateX = 45).

    • Click Key again.

Step 5: Test Your Rig!
Now, slowly move the Jaw_CTRL up and down. The jaw should open and close smoothly. You've just created your first Set Driven Key rig!

Part 2: Building a Custom Control GUI with MEL

Manipulating controls in the viewport is great, but for a clean, professional rig, a custom GUI is unbeatable. Let's use your scripts to build one.

Step 1: Create the Main Window
We'll start by creating the window and its basic layout.

mel
// Create the main window for our facial rig
window -title "Zeeshan Academy - Facial Rig" -widthHeight 300 400;
// Define a simple column layout to stack our controls
columnLayout -adjustableColumn true;

// Add a title text
text -label "Facial Control Panel" -font "boldLabelFont";

Step 2: Add Control Sliders
Let's add a slider for our jaw control. The attrFieldSliderGrp command is perfect as it gives us a slider, a field, and a label.

mel
// Create a slider for the Jaw control
attrFieldSliderGrp -min 0 -max 10
                   -columnWidth3 20 70 100
                   -attribute "Jaw_CTRL.translateY"
                   -label "Jaw Open"
                   jawSlider;
  • -min/-max: Defines the slider's range.

  • -columnWidth3: Sets the width for the number, slider, and field.

  • -attribute: This directly links the GUI element to our control's attribute in the scene! This is the most powerful part.

Step 3: Add Functional Buttons
Now, let's add buttons to select controls quickly.

mel
// Add some space
text -label "";

// A regular button to select the jaw control
button -width 130 -height 25 -label "Select Jaw CTRL" -annotation "Selects the Jaw Control" -command "select -r Jaw_CTRL";

// A symbol button for a hand control (using a placeholder image)
symbolButton -image "sphere.xpm" -command "select -r Hand_CTRL" -annotation "Select Hand CTRL";
  • The -command flag runs a MEL command when pressed. Here, it's a simple select command.

Step 4: Add a Checkbox for System Switching
For more complex rigs (like IK/FK switching), a checkbox is ideal.

mel
// Add more space
text -label "";

// A checkbox for an IK/FK switch
checkBox -label "IK / FK Switch" -width 130 -height 19 -annotation "Switch between IK and FK controls"
         -onCommand "setAttr IK_FK_CTRL.switch 1" // Command when checked
         -ofc "setAttr IK_FK_CTRL.switch 0";      // Command when unchecked

Step 5: Show the Window
Finally, we need to display the window we've built.

mel
// Show the completed window
showWindow;

Putting It All Together: Your Final MEL Script

Here is the complete script you can paste into the Maya Script Editor (make sure to be in the MEL tab) and execute.

mel
// Check if window exists and delete it to avoid errors
if (`window -exists facialRigWindow`) deleteUI facialRigWindow;

// Create the main window for our facial rig
window -title "Zeeshan Academy - Facial Rig" -widthHeight 300 400 facialRigWindow;
// Define a simple column layout to stack our controls
columnLayout -adjustableColumn true;

// Add a title text
text -label "Facial Control Panel" -font "boldLabelFont";

// Create a slider for the Jaw control
attrFieldSliderGrp -min 0 -max 10 -columnWidth3 20 70 100 -at "Jaw_CTRL.translateY" -l "Jaw Open" jawSlider;

// Add some space
text -label "";

// A regular button to select the jaw control
button -w 130 -h 25 -label "Select Jaw CTRL" -ann "Selects the Jaw Control" -c "select -r Jaw_CTRL";

// A symbol button for a hand control
symbolButton -image "sphere.xpm" -c "select -r Hand_CTRL" -ann "Select Hand CTRL";

// Add more space
text -label "";

// A checkbox for an IK/FK switch
checkBox -label "IK / FK Switch" -w 130 -h 19 -ann "Switch between IK and FK controls" -onc "setAttr IK_FK_CTRL.switch 1" -ofc "setAttr IK_FK_CTRL.switch 0";

// Show the completed window
showWindow;

Conclusion: You Are Now a Driver Master!

Congratulations! You've not only learned how to create intuitive rigging relationships with Set Driven Key but also how to build a professional-looking control panel using MEL. This combination is the foundation of creating robust, user-friendly character rigs that animators will love.

The principles you've learned here can be expanded to rig entire faces—where one slider could control the corners of the mouth, the cheeks, and even create nose wrinkles all at once.

For a visual walkthrough of this entire process, don't forget to check out the detailed video tutorial on the Zeeshan Academy YouTube channel!

Now, go forth and drive some keys!

Prof. Dr. Zeeshan Bhatti
Zeeshan Academy - https://www.youtube.com/@ZeeshanAcademy

Following are few quick scipts to create MEL GUI components:


create a window
 window;

  // define the layout of controls added 
  // to the window.
  columnLayout;

   // create some text
   text -label "hello world";

 // show the window we last created
 showWindow;

Slider:
attrFieldSliderGrp -min -10 -max 10 -cw 1 20 -cw 2 1 -cw 3 70
                              -at RightLeg_CTRL.AnkelRotate
                              -l aud AFD1;

Button:
button -w 70 -h 20 -label "Select All" -ann "Select all Controls" -c selAll

Symbol Button

// create window
window;
columnLayout;
   
  // create three symbol buttons with related mel command
  symbolButton -image "circle.xpm" -command "circle";
  symbolButton -image "sphere.xpm" -command "sphere";
  symbolButton -image "cube.xpm" -command "polyCube";
showWindow;


Checkbox:
checkBox -label "IK_FK" -w 30 -h 19 -ann "Switch IK FK control"
                 -onc "l_showIKFK(\"1\")"
                 -ofc "l_showIKFK(\"0\")"
                 ik_fk_switch;

example:
// create a checkbox
$c = `checkBox -label "thingy" -onCommand "on_func" -offCommand "off_func"`;
// to get the current value of the checkBox, use the -query flag
$value = `checkBox -query -value $c`;
print("check_box value = "+ $value +"\n");


Button with IMAGE:
iconTextButton -style "iconOnly" -mw 0 -mh 0 -ann "Select Hand CTRL"
                          -image1 "bbutton.bmp" -w 20 -h 20
                          -command "SelectHandCTRL(\"Left\")" 
                           selHand_Ctrl;

               

Featured post

🐍 PYTHON DEVS RAGE: Can Vibe Coding Replace Your Next 100 Lines of Code? (Full Tutorial)

  🐍 PYTHON DEVS RAGE: Can Vibe Coding Replace Your Next 100 Lines of Code? (Full Tutorial) Replace boilerplate Python code effortlessly ...