<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="http://hi5lab.org/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="http://hi5lab.org/feed.php">
        <title>High Fidelity Virtual Environments (Hi5) Lab tutorials</title>
        <description></description>
        <link>http://hi5lab.org/</link>
        <image rdf:resource="http://hi5lab.org/lib/tpl/dokuwiki/images/favicon.ico" />
       <dc:date>2026-05-02T05:08:44+00:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="http://hi5lab.org/doku.php?id=tutorials:academic_guides&amp;rev=1730471840&amp;do=diff"/>
                <rdf:li rdf:resource="http://hi5lab.org/doku.php?id=tutorials:ffopengl&amp;rev=1627778693&amp;do=diff"/>
                <rdf:li rdf:resource="http://hi5lab.org/doku.php?id=tutorials:ffopengl_3d&amp;rev=1627778931&amp;do=diff"/>
                <rdf:li rdf:resource="http://hi5lab.org/doku.php?id=tutorials:ffopengl_lighting&amp;rev=1627779035&amp;do=diff"/>
                <rdf:li rdf:resource="http://hi5lab.org/doku.php?id=tutorials:ffopengl_mouse&amp;rev=1627778859&amp;do=diff"/>
                <rdf:li rdf:resource="http://hi5lab.org/doku.php?id=tutorials:ffopengl_textures&amp;rev=1627779174&amp;do=diff"/>
                <rdf:li rdf:resource="http://hi5lab.org/doku.php?id=tutorials:ffopengl_vbo&amp;rev=1627779204&amp;do=diff"/>
                <rdf:li rdf:resource="http://hi5lab.org/doku.php?id=tutorials:hi5lab_survival_guide&amp;rev=1691806021&amp;do=diff"/>
                <rdf:li rdf:resource="http://hi5lab.org/doku.php?id=tutorials:opengl_ply_mesh&amp;rev=1627779132&amp;do=diff"/>
                <rdf:li rdf:resource="http://hi5lab.org/doku.php?id=tutorials:pfopengl_lighing&amp;rev=1627779329&amp;do=diff"/>
                <rdf:li rdf:resource="http://hi5lab.org/doku.php?id=tutorials:pfopengl_shaders&amp;rev=1627779250&amp;do=diff"/>
                <rdf:li rdf:resource="http://hi5lab.org/doku.php?id=tutorials:pyopengl&amp;rev=1627778762&amp;do=diff"/>
                <rdf:li rdf:resource="http://hi5lab.org/doku.php?id=tutorials:python&amp;rev=1627855601&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="http://hi5lab.org/lib/tpl/dokuwiki/images/favicon.ico">
        <title>High Fidelity Virtual Environments (Hi5) Lab</title>
        <link>http://hi5lab.org/</link>
        <url>http://hi5lab.org/lib/tpl/dokuwiki/images/favicon.ico</url>
    </image>
    <item rdf:about="http://hi5lab.org/doku.php?id=tutorials:academic_guides&amp;rev=1730471840&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-11-01T14:37:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>tutorials:academic_guides</title>
        <link>http://hi5lab.org/doku.php?id=tutorials:academic_guides&amp;rev=1730471840&amp;do=diff</link>
        <description>Coursework Guides &amp; Checklists

These guides and checklists are unofficial and for informational purposes only.  Their primary purpose is to aid students working in the Hi5 Lab make better informed decisions about their academic paths.  As always, check you progress against your university's official guides and policies.</description>
    </item>
    <item rdf:about="http://hi5lab.org/doku.php?id=tutorials:ffopengl&amp;rev=1627778693&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-08-01T00:44:53+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>tutorials:ffopengl</title>
        <link>http://hi5lab.org/doku.php?id=tutorials:ffopengl&amp;rev=1627778693&amp;do=diff</link>
        <description>PyOpenGL Introduction

NOTE: This is a supplement to our lectures.  There are many details that will not be covered here that are covered in the lecture.  

For this class, we are going to be working with OpenGL in Python. Before we go into the specifics, let's look at some generalities.  OpenGL programs, regardless of language, typically have a very specific structure, shown below.</description>
    </item>
    <item rdf:about="http://hi5lab.org/doku.php?id=tutorials:ffopengl_3d&amp;rev=1627778931&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-08-01T00:48:51+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>tutorials:ffopengl_3d</title>
        <link>http://hi5lab.org/doku.php?id=tutorials:ffopengl_3d&amp;rev=1627778931&amp;do=diff</link>
        <description>Getting Started in 3D

In our class example, we used GLUT to display some simple 3D geometric primitives.  To use GLUT, we needed to include a new import statement at the top of our source code.


from __future__ import division
from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import * # &lt;----  New Import for GLUT
import numpy as np
import pygame</description>
    </item>
    <item rdf:about="http://hi5lab.org/doku.php?id=tutorials:ffopengl_lighting&amp;rev=1627779035&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-08-01T00:50:35+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>tutorials:ffopengl_lighting</title>
        <link>http://hi5lab.org/doku.php?id=tutorials:ffopengl_lighting&amp;rev=1627779035&amp;do=diff</link>
        <description>Old-School OpenGL Lighting

We are starting out learning an older OpenGL standard to get our feet wet.  This is mainly to get you used to some of the basic ways OpenGL works before jumping into the more advanced topics.  As such, we are going to look at a somewhat old-school lighting method.</description>
    </item>
    <item rdf:about="http://hi5lab.org/doku.php?id=tutorials:ffopengl_mouse&amp;rev=1627778859&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-08-01T00:47:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>tutorials:ffopengl_mouse</title>
        <link>http://hi5lab.org/doku.php?id=tutorials:ffopengl_mouse&amp;rev=1627778859&amp;do=diff</link>
        <description>PyGame Mouse Events

In class, we looked at capturing mouse events with PyGame and then using those to interact with our OpenGL environment.  Recall that one of the steps in our display loop is checking for user events.  The contents of our check_events() function from our previous examples looked like the following:</description>
    </item>
    <item rdf:about="http://hi5lab.org/doku.php?id=tutorials:ffopengl_textures&amp;rev=1627779174&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-08-01T00:52:54+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>tutorials:ffopengl_textures</title>
        <link>http://hi5lab.org/doku.php?id=tutorials:ffopengl_textures&amp;rev=1627779174&amp;do=diff</link>
        <description>Texture Mapping

When modifying your sample code to support texture mapping, you're going to need to include a way to read in images.  In class, we looked at the PPM ASCII format.  In this example, however, I'll show you how to use PIL (Python Image Library) which can open a wide variety of image formats.  You will need to include one of the following imports at the top of your program.  Some releases of Python require one while some require the other.  Why?  No idea.  This was discovered via tr…</description>
    </item>
    <item rdf:about="http://hi5lab.org/doku.php?id=tutorials:ffopengl_vbo&amp;rev=1627779204&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-08-01T00:53:24+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>tutorials:ffopengl_vbo</title>
        <link>http://hi5lab.org/doku.php?id=tutorials:ffopengl_vbo&amp;rev=1627779204&amp;do=diff</link>
        <description>Vertex Buffer Objects

Until now, we've been using glBegin and glEnd when drawing our geometry.  However, you've probably noticed that this is very slow (especially when rendering lots of vertices).  This is largely because you are sending your geometry to the GPU with every frame!  Wouldn't it be better if we sent the geometry to the GPU</description>
    </item>
    <item rdf:about="http://hi5lab.org/doku.php?id=tutorials:hi5lab_survival_guide&amp;rev=1691806021&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-08-12T02:07:01+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>tutorials:hi5lab_survival_guide</title>
        <link>http://hi5lab.org/doku.php?id=tutorials:hi5lab_survival_guide&amp;rev=1691806021&amp;do=diff</link>
        <description>The Guide - Survival (and Success?) in the Hi5 Lab

Purpose: This guide is intended to be an imperfect, non-comprehensive guide to surviving and thriving (and hopefully enjoying!) life in the Hi5 Lab.  This is probably helpful for working in other labs too while being strongly influenced by my lab's culture.</description>
    </item>
    <item rdf:about="http://hi5lab.org/doku.php?id=tutorials:opengl_ply_mesh&amp;rev=1627779132&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-08-01T00:52:12+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>tutorials:opengl_ply_mesh</title>
        <link>http://hi5lab.org/doku.php?id=tutorials:opengl_ply_mesh&amp;rev=1627779132&amp;do=diff</link>
        <description>Stanford Polygon (PLY) Format

In class, we talked about meshes.  Meshes are continuous surfaces that are approximated as a series of connected polygons.  These polygons are usually either triangles or quads.


For your projects, you'll be using PLY files, also known as Stanford Polygon files.  The PLY file can be generalized as consisting of two sections: the header and the body.  The header describes the format of the contents of the body.  Below is an example header from the cow model we work…</description>
    </item>
    <item rdf:about="http://hi5lab.org/doku.php?id=tutorials:pfopengl_lighing&amp;rev=1627779329&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-08-01T00:55:29+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>tutorials:pfopengl_lighing</title>
        <link>http://hi5lab.org/doku.php?id=tutorials:pfopengl_lighing&amp;rev=1627779329&amp;do=diff</link>
        <description>More Shaders

For your lighting assignment, you will need to write a vertex and fragment shader that implements the Phong Lighting Model (details about the Phong Model can be found in the class slides).  First, we need to learn a little more about shaders.  In the previous set of notes, we talked about predefined incoming and outgoing variables that allow you to share information down the rendering pipeline from your program to vertex shader to fragment shader.  However, what if we want to commu…</description>
    </item>
    <item rdf:about="http://hi5lab.org/doku.php?id=tutorials:pfopengl_shaders&amp;rev=1627779250&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-08-01T00:54:10+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>tutorials:pfopengl_shaders</title>
        <link>http://hi5lab.org/doku.php?id=tutorials:pfopengl_shaders&amp;rev=1627779250&amp;do=diff</link>
        <description>Getting Started with Shaders

The main details of this were covered in class, so referencing your notes is a good idea.  However, we'll do a brief recap.

Recall that the programmable pipeline requires us to write two programs that are external to our main PyOpenGL program.  These programs, called shader programs, are written in a C-like programming language called GLSL (GL Shader Language).  The first of these two shader programs is our</description>
    </item>
    <item rdf:about="http://hi5lab.org/doku.php?id=tutorials:pyopengl&amp;rev=1627778762&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-08-01T00:46:02+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>tutorials:pyopengl</title>
        <link>http://hi5lab.org/doku.php?id=tutorials:pyopengl&amp;rev=1627778762&amp;do=diff</link>
        <description>PyOpenGL + PyGame

These are notes from a graphics course that I taught many years ago.  Hopefully, they will be useful for someone.  They focus on Python 2.7, which is now deprecated.  However, it is likely that some of this will still translate to Python 3.</description>
    </item>
    <item rdf:about="http://hi5lab.org/doku.php?id=tutorials:python&amp;rev=1627855601&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-08-01T22:06:41+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>tutorials:python</title>
        <link>http://hi5lab.org/doku.php?id=tutorials:python&amp;rev=1627855601&amp;do=diff</link>
        <description>Python Wiki

This page is geared toward getting students who may be interested in basic data science (and related stuff) off to a running start with Python, but it will probably be useful for other folks too.  This wiki is an evolving project (typos and bad grammar included free of charge), so check back for updates.</description>
    </item>
</rdf:RDF>
