Showing posts with label programming. Show all posts
Showing posts with label programming. Show all posts

Saturday, April 24, 2021

Virtual Art Gallery: Props and Pawns

 Details about the functionality:

The player pawn is for walking around and looking at things. It contains actions for moving forwards backwards and sideways using the keyboard, and looking around with mouse.

The pawn is set up as a "character" with character movement. There is a spring arm with camera, but currently the distance is zero, so it functions as a first person view. I also added some optional actions for mouse right click to zoom in, and left shift crouches down and back up; both using a timeline.

I decided to try using a "cinematic camera" for the player view, and see what features make it unique. It has lots of settings to tweak the image quality, lenses, and focus. In this case I made a simple autofocus for fading things that are outside the center area. 

Autofocus triggers on the tick, set at 1 second intervals

There are posed people set up around for scale and atmosphere, but they can be an obstruction. To resolve this, I built a blueprint that can fade the people in or out when the player is near.

blueprint with capsule collision. material instance parameter
faded in and out with a timeline.


Dither fade and remove collision when overlapped


added dither parameter to master material

Props:
Herman Miller inspired bent plywood desk



Work desk inspired by Herman Miller vintage office

Small workspace


Modular sofa set. showing detailed fabric material

master material: Reused the canvas pattern and normal maps.
starts with a color, blends with pattern, mixes in 2 bump textures.


Saturday, March 21, 2015

Equalizer design and Analog Dial Implementation


Design for a vintage styled equalizer interface. Graphics were created for dials and switches: metal slider, animated screw-heads, and back panel inspired by old radio equipment.

It can be considered a test version. Be careful when processing audio with it. There are limiters in place to prohibit peaks, but they can be removed by turning either of the lower brass inlets. now you are free to overload the unit, yet, do so at your own risk. If necessary, one can screw around with the frequency centers using a flat head driver. channel potential is 10-16000hz.

Install the plugin by placing the file into a folder which your vst host will recognize as a plugin repository.

Download VST Plugin

color controls

color wheel control and palette manager. These interface controls for selecting colors, were built as an exercise. It consists of a radial hue selector, saturation and lightness xy pad, and small preview swatch. next a swatch array was added to store color settings. clicking any area in the grid will select a color slot and can output the stored color.
DOWNLOAD CONTROL DEMO











color wheel module diagram

















The main colorwheel consists of 5 modules applied to the view in sequence. "Drag angle" determines the radial direction of user mouse drag. converting an x,y ray extending from the center to 360 degree outward. this range determines the hue.

calculating ray angle




inside 'radial 360' module: fixes angle direction sector and offsets















"center blend" is an xy accumulator with range conversion between 0-255 on each dimension. the display for the center square is pair of layered gradients of value and saturation. the input hue is shifted based on current rotary degree selection.
center blend for sat-val display











The swatch array is built upon modules with multiple index synchronized arrays.
inside main schematic block










the columns are created by a little module that reads the index elements, calculates the space available in the view box, and fits as many into rows and columns as possible within size and margin dimension constraints.
columnizer: take note of integer to float conversions










there is also a module that kind of reverses the process. it converts mouse x,y click to grid units, and finds out what array index that mouse click is contained within. then the columnize module puts the highlight rectangle around that box.
find index by x,y








swatch array: each trigger activates both











The basis is the 'color array', which consists of 4 arrays, one for each A,R,G,B value. they are added and retrieved at once by index, and can get and set values with triggers. below is the color array 'edit' module, which is paired with a duplicate color array 'read' module. they are synchronized to solve a problem with modifying colors while the draw loop is setting the index value.
color array edit: access to color array items happens here.