CSC 480 -
Special Topics in Multimedia Programming, Spring 2020, MonWed
4:30-5:50 PM, Old Main 158. Attendance at class time via Zoom is an
option. I advise students who did not take CSC220 to attend in
person.
Here is the Zoom link for our course:https://kutztown.zoom.us/j/346596784
Dr.
Dale E. Parson Spring 2020 Office Hours (Old Main
260): Tu
2:30-4:30, Wed 12:00-2:00, Fri 1:30-2:30, or by appointment. Parson office hours for last two weeks of spring 2020:
Tuesday Apr 28 2-3 PM (changed from 2:30-4:30)
Wed Apr 29 12-2 PM as usual
Fr May 1 1:30-3:30 (extra hour added)
Final exam week hours:
Tuesday May 5 2:30-4:30 PM as usual
Wed May 6 12-1 PM (one hour less)
Thursday May 7 1:30-3:30 (Friday's usual office hour cancelled)
Final exam period Wednesday, May 6, 2020,
2:00 p.m. – 4:00 p.m. is an optional-attendance
work session.
Real-time on-line teaching via Zoom to
commence March 23 through end of semester. You can attend
interactively at normal class time if possible
via https://kutztown.zoom.us/j/346596784.
Use the Chrome
browser if possible. Click the link before
March 23 to auto-install Zoom if you haven't
already.
I will post a
link to a video recording of each class within
24 hours at the bottom of this course page as
before.
My office hours will
take place at the normal times VIA
THIS DIFFERENT, OFFICE HOUR ZOOM ROOM.
Please watch your
email & this course page. If Zoom runs out
of steam, I will post YouTube videos &
send email.
Some CSC363 student
teams are using https://discordapp.com/
to communicate. That may come in useful for
assn4/5.
Open
Broadcaster Software
OBS, Free and open source
software for video recording and live
streaming.
The
Book of Shaders for intro to GLSL
shaders running on the GPU. CSC480
Special topics course in spring 2020: This course increases breadth and depth of knowledge for
students with experience in object- oriented programming for
multimedia systems. Advanced topics include working with
camera point-of-view and lighting sources for 3D graphics,
recursive shapes and fractals, pixel-level image processing,
and animated video composition. Students will program
graphical images, video streams, audio signals, physical
devices containing electronic sensors and effectors, and
combinations of these media. There will be solo and team
programming projects.
Prerequisites: CSC220 with a grade of C or better.
RESOURCES & HANDOUTS
Shiffman's
textbook's website including Examples and Exercises that
will familiarize you with Processing. Textbook is optional, there is 1 copy on one-day reserve in
Rohrbach Library. Buying it is cheap.
Software setup instructions:
1. On your Windows U:\ drive, create a new
folder called Processing.
U:\ is available
anywhere on campus and does not auto-delete files.
Do not store files
on your PC desktop. They will be gone after you log out.
2. Use the Windows Explorer to create
folder U:\Processing.
3. Every time you start Processing, go to
Preferences and change the Sketchbook location to
U:\Processing.
You must create
folder U:\Processing the first time you want to use it.
To run Processing,
find Processing under S:\ComputerScience on your PC.
5. All of your practice and assignment
sketches must reside under U:\Processing.
6. If you Download & Install
Processing on your home machine, use the latest
version Processing 3.x, currently 3.5.4.
I don't usually
upgrade the version mid-semester, in the interest of
stability, unless I need a specific bug fix.
Switch it to Java
mode if it comes up in some other mode.
Dr. Parson's solution to Assignment 1: LoopState
tab from the client. Server tab, Musician
tab, Note
tab from the server.
Lead up to Assignment 2 on recursive
shapes. Recursive2020Parson is an
updated version of a Fall 2017 2D recursive shape assignment
for CSC220. Recursive2017Shape.svg
was an experiment in a 2D PShape design that I did not use. PShapeRecursive3D is an
updated to a previous CSC220 3D Avatar-in-space assignment
that I made recursive.
It has source code
tabs: CustomPShape
and VectorAvatar. Assignment 5 from spring
2017's CSC220 class that initiated this sketch.
It was the last time I covered recursion in
CSC220. We switch to doing an Android app after that. Trigonometry slides relating
to recursion and graphical coordinates in general.
Lead up to Assignment 3 on
time-recursive photos of the Processing canvas. CSC480DemoScreenshot1
is my initial demo for thinking.
Assignment
3 on time-recursive photos of the Processing canvas is due
via D2L by 11:59 PM Wednesday April 8. CSC480PixelPhotosAssn3
is the handout code that you must extend. Due date slid
from April 1 because of KU closure.
Updated handout 3/25:
The move() function in class Brush is updated, please copy
this function into your sketch.
Also, at the top of
draw's display loop I added this line; please add it to your
sketch: brush.move() ; // added by Parson
3/25/2020
brush.display();
// This line was already in the original
handout code.
I forgot to mention this one. If you
use the coordinates that I specified for 'l' (line) and 't'
(triangle),
it
will be easiest if you use the following translate within each
of those 2 cases only:
case 'l':
translate(-(startx+endx)/2, -(starty+endy)/2);
This undoes the translate at the top of
Brush.display(), restoring global coordinates,
which is what my
instructions are in, for example this one:
't' triangle (STUDENT must add this:
startx,starty, endx,endy, (startx+endx)/2,
Y_BASED_ON_THESE_4_VARS
'l' line (STUDENT add from
startx,starty to endx,endy, thick strokeWeight)
Note that I specified coordinates in terms
of startx, etc. For those to appear on the screen,
it is necessary to use
this reverse translate before drawing your triangle or line.
Assignment
4 & 5 will be individual or 2-team projects
that students design. Due dates are April 17 and May 7 via
D2L.
Example sketches. You
can also build atop previous assignments. CSC480Spring2020QuiltAnimate
is a sketch demoed on March 23.
ZOOM RECORDINGS January
22 on an overview of the course for the semester and some
sample project ideas. January
27 Start of overview of the graphical server, Android client
architecture for Assignment 1. January
29 walking through the OSC/UDP receiver-side plumbing of the
server, and overview of the simpler, 2D client. February
3 going over instructions for Assignment 1. February
5 going over example recursive graphics programs. February
10 slides on trig functions linked
here, also more recursive graphics examples including 3D.
Processing's fullScreen()
does not show up in Zoom or its archives. I stopped doing that
when we figured it out. February
12 more coding examples on recursion & navigating the
camera through a 3D visual space. February
17 went over Assignment 2 handout and structure of starting
code. February
24 went over sketch CSC480DemoScreenshot1
and the following videos in prep for Assignment 3: Flaming Beauty,
exhibited in the 2019 Art of the State Exhibit in Harrisburg; From the No World; Virtual Infinity Room #2. February
26 continued going over CSC480DemoScreenshot1
of February 24. March
2 went over most of Assignment 3 specifications and handout
code. March
4 completed going over Assignment 3, also Illustrator ->
SVG -> Processing example, then work session. March
23 going over the CSC480Spring2020QuiltAnimate sketch above
as one possible assn4/5 to extend. March
25 Q&A on Assignment 3, with illustrations
from this Zoom session in the updated handout doc. March
30 Overview & demo of ideas for Assignments 4/5. Also,
how to capture Processing graphics frames to make a video. April
1 Overview & demo more ideas for Assignments 4/5. Also
some Assignment 3 Q&A. April
6 demos of (uniform) random(), (Perlin) noise() and
randomGaussian(), code is
here. A simple rotate demo
is here.
Also went over flight-path demo that
supplies trig path-finding functions based on observation
site and flight direction. April
8 Work session with Q&A for Assignment 3. April
13 Some Q&A on Assignments 4 & 5 and some related
discussion.
YOU NOW HAVE TO TYPE A STUPID PASSWORD
TO VIEW THE VIDEO. HERE IT IS: Z6&==kM0 April
15 I went over a pixel-level algorithm for trimming
transparent pixels around the border of a PImage during a work
session. April
20 Work session. Examined image-fitting &
transparent-boundary trimming in CSC480TrimTransparent17Apr2020
above. April
22 Work session with some recorded Q&A. May
6 Work session where I went over how to use PImage's mask()
function for masking out parts of an image.