using UnityEngine; using System.Collections; using ProceduralToolkit; public class Vertical_Plot : MonoBehaviour { MicrophoneInput micInput; Mesh mesh; //[SerializeField] //Material _material; //MaterialPropertyBlock _block; public int numPlotLines = 1024; [Range(1f, 200f)] public float scale_plot; Vector3 vRight, vUp,v0,v1,v2,v3; float xScale;//scale amp to plot public Color graphColor; public Color delayColor; private MeshDraft mDraft; public MeshDraft MDraft { get { return mDraft; } } void Start() { MeshFilter mf = GetComponent<MeshFilter>(); if (mf.mesh == null) mf.mesh = new Mesh(); mesh = mf.mesh; mDraft = new MeshDraft(); //_block = new MaterialPropertyBlock(); micInput = GetComponent<MicrophoneInput>(); xScale = 450f; vRight = transform.right; vUp = transform.up; initPlot(); ToMeshInternal(); } float accumTime = 0f; private void ToMeshInternal() { mesh.Clear(); mesh.vertices = mDraft.vertices.ToArray(); mesh.triangles = mDraft.triangles.ToArray(); mesh.normals = mDraft.normals.ToArray(); mesh.uv = mDraft.uv.ToArray(); mesh.colors = mDraft.colors.ToArray(); } //951 //581 //1532 //x extent 475 //x abs 450; private void initPlot() { float dy = 1532f/numPlotLines; Vector3 vDeltY = new Vector3(0, dy, 0); Vector3 vDeltYHalf = vDeltY / 2; float phiRatio = 391f / 1024f; int cycleOnce = (int)(phiRatio * numPlotLines); float sampAmp = 0; Vector3 posRideY = Vector3.zero + vDeltY/2f; int count = 0; while(count < numPlotLines) { sampAmp = 0.5f + 0.5f * Mathf.Sin(2f*Mathf.PI*(float)count / (float)numPlotLines);//test v0 = posRideY - sampAmp * xScale * vRight - vDeltYHalf; v1 = posRideY - sampAmp * xScale * vRight + vDeltYHalf; v2 = posRideY + sampAmp * xScale * vRight + vDeltYHalf; v3 = posRideY + sampAmp * xScale * vRight - vDeltYHalf; AddQuad(v0, v1, v2, v3, graphColor); if (++count == cycleOnce) posRideY -= vDeltY * numPlotLines; posRideY += vDeltY; } } void setBucketQuad(int idx, float val, Color col) { if (idx < MDraft.vertices.Count - 4) { int id4 = idx * 4; v0 = mDraft.vertices[id4]; v1 = mDraft.vertices[id4 + 1]; v2 = mDraft.vertices[id4 + 2]; v3 = mDraft.vertices[id4 + 3]; v0.x = v1.x = -val * xScale* scale_plot; v2.x = v3.x = val * xScale * scale_plot; mDraft.vertices[id4] = v0; mDraft.vertices[id4 + 1] = v1; mDraft.vertices[id4 + 2] = v2; mDraft.vertices[id4 + 3] = v3; mDraft.colors[id4] = col; mDraft.colors[id4 + 1] = col; mDraft.colors[id4 + 2] = col; mDraft.colors[id4 + 3] = col; } } // 1 2 // 0 3 void Update() { accumTime += Time.deltaTime; int numSampsDisplay = (int)((micInput.echoTime - micInput.delayTime)*micInput.globalSampleRate*2f); int sampsPerBucket = (int)((float)numSampsDisplay / (float)numPlotLines); float timePerBucket = (micInput.echoTime - micInput.delayTime)/ (float)numPlotLines; int n = 0; int nScan = micInput.Record_Head; float accumSamp = 0f; float bucketVal; int bIdx = 0; float timeWalk = 0f; while(n < numSampsDisplay-1) { for (int i = 0; i < sampsPerBucket; i++) { accumSamp += Mathf.Abs(micInput.EchoBuffer[nScan]); n++; if (--nScan < 0) nScan = micInput.EchoBuffer.Length - 1; } bucketVal = accumSamp / (float)sampsPerBucket; accumSamp = 0f; timeWalk += timePerBucket; if(timeWalk > micInput.echoTime ) { setBucketQuad(bIdx, bucketVal,delayColor); } else { setBucketQuad(bIdx, bucketVal, graphColor); } if (++bIdx > numPlotLines - 1) break; } ToMeshInternal(); //ToMeshInternal(); //Vector3 vH0 = a12horns.v12HORN_Norms[0]; //Quaternion q; //for (int i = 0; i < 12; i++) //{ // //q = Quaternion.FromToRotation(vH0, a12horns.v12HORN_Norms[i]); // q = Quaternion.LookRotation(a12horns.v12HORN_Norms[i]); // //print(q.ToString()); // Graphics.DrawMesh(GetComponent<MeshFilter>().mesh, Vector3.zero, q, _material, gameObject.layer, null, 0, _block); //} } public int GetNumVertices() { return mDraft.vertices.Count; } public Vector3 GetVertex(int i) { return mDraft.vertices[i]; } public void SetVertex(int i, Vector3 v) { mDraft.vertices[i] = v; } public void MeshDraft_ToMesh() { if (mDraft != null) { GetComponent<MeshFilter>().mesh = mDraft.ToMesh(); } } public void initAddMeshDraft(MeshDraft md) { MeshFilter mf = GetComponent<MeshFilter>(); if (mf.mesh == null) mf.mesh = new Mesh(); mesh = mf.mesh; mDraft = new ArgosMeshDraft(); if (mDraft != null) { mDraft.Add(md); GetComponent<MeshFilter>().mesh = mDraft.ToMesh(); } } public void AddMeshDraft(MeshDraft md) { if (mDraft != null) { mDraft.Add(md); GetComponent<MeshFilter>().mesh = mDraft.ToMesh(); } } public void AddMeshDraft_Only(MeshDraft md) { if (mDraft != null) { mDraft.Add(md); } } public void AddQuad(Vector3 v0, Vector3 v1, Vector3 v2, Vector3 v3) { if (mDraft != null) { mDraft.Add(MeshDraft.Quad(v0, v1, v2, v3)); } } public void AddQuad(Vector3 v0, Vector3 v1, Vector3 v2, Vector3 v3, Color col) { if (mDraft != null) { mDraft.Add(MeshDraft.Quad(v0, v1, v2, v3, col)); } } }
- A Detailed Look at Oculus Utilities for Unity
- about
- argos.vu
- contact us
- DevNotes – Archive – 3-15-17 Back
- Electric Tours Dinosaur Colorado
- Free Form Deformation
- Funding Research
- Gallery_One
- harmonic resonance
- Jim’esque Simulation Details
- PitchDeck
- Plasma Dynamics
- points of interest
- Raw Materials
- Rudolph Steiner
- TetraWaveForm
- Volo Meeting 12-11-2018
- VRARA
- WEBFLOW TEMPLATES
- development videos
- development notes
- argosSphere nav table
- devNotes 3-16-16 hex map seam
- devNotes 3-21-16 cursor & hex addressing
- devNotes 3-22-16 cursor & hex addressing
- devNotes 3-23-16 cursor design
- devNotes 3-24-16 cursor design
- devNotes 3-25-16 paint_track – paintList_track – movement recording
- devNotes 3-26-16 unoShader unlit – unity online conference
- devNotes 3-27-16 path recording – spline continuity and net spawning
- devNotes 3-28-16 networking – NetworkTransform – Player Objects – NetworkBehaviour
- devNotes 3-29-16 networking – Setting up a Multiplayer Project
- devNotes 3-30-16 networking – Parenting netCamera – netCamMove code
- devNotes 3-31-16 networking remote client
- devNotes 4-01-16 networking remote testing
- devNotes 4-02-16 networking netMove states – Cmd from client
- devNotes 4-03-16 networking – front end UI – prepare for testing
- devNotes 4-04-16 minApp – targeting & timed performance – as list
- devNotes 4-05-16 pcg utilities – quad spawning – tween – elastic
- devNotes 4-06-16 elastic slerp – quaternion tweens overshoot
- devNotes 4-07-16 slerpspergsburg unclamped
- devNotes 4-08-16 adb – code for ui netManager – 3rd geometry layer
- devNotes 4-09-16 circle lattice packing
- devNotes 4-10-16 goldberg polyhedra construction and addressing
- devNotes 4-11-2016 ico-sphere projection mapping – audio sample
- devNotes 4-12-16 Spherical Mapping – Audio Xurious
- devNotes 4-13-16 quaternion mesh tile matching
- devNotes 4-14-16 tile matching and scaling – multum in parvo
- devNotes 4-15-16 triangle grading – Voronoi cells and Delaunay triangulation
- devNotes 4-16-16 instancing tethered masses with radial repelling forces
- devNotes 4-17-16 triangle center quality – point in given cell
- devNotes 4-18-16 triangle center quality – projections to/from the uv plane
- devNotes 4-19-16 tcq – unit testing – 2D rotator
- devNotes 4-20-16 tcq – unit testing continued
- devNotes 4-21-16 tcq implementation – hex mapping and indexing
- devNotes 4-22-16 hex generation using subdivision
- devNotes 4-23-16 hex alignment and placement
- devNotes 4-24-16 build hexagons from veronoi positions
- devNotes 4-25-16 voronoi position list and data structure
- devNotes 4-26-16 fibonacci voronoi position list nb direction ordering
- devNotes 4-27-16 fibonacci nodes – triangulation and meshing
- devNotes 4-28-16 ArgosFibonacci.cs – quad cells – indexing and tweening
- devNotes 4-29-16 ArgosFibonacci.cs – iTween Callbacks
- devNotes 4-30-16 ArgosFibonacci.cs – iTween driven quaternion lerp
- devNotes 5-01-16 fibo Begin the Beguine
- devNotes 5-02-16 foriero – sequencer
- devNotes 5-03-16 midi specs, delegates and events
- devNotes 5-04-16 midi events – animations – procrustean
- devNotes 5-05-16 video project 1
- devNotes 5-07-16 icosahedral projection
- devNotes 5-07-16 phasor on icoplane
- devNotes 5-08-16 dotProduct gatherings
- devNotes 5-09-16 events, vizEls and spinerettes
- devNotes 5-10-16 patterns, particle system internals, crossfades
- devNotes 5-11-16 path follow, koreographer & theme
- devNotes 5-12-16 scrubber, event editing and composition
- devNotes 5-13-16 timing, events and tweening
- devNotes 5-14-16 navigation, particles and time tweens
- devNotes 5-15-16 particles, instantiation, fibRider and tweening
- devNotes 5-16-16 timed tweens, visual flow and particle dynamics
- devNotes 5-17-16 particle system positioning, world space and ps threading
- devNotes 5-18-16 detail, precision, focus, rigor in the vigor
- devNotes 5-19-16 three tier workflow – particle system foundry
- devNotes 5-20-16 lines, fills and fibonacci
- devNotes 5-21-16 code review, app design and sound painting
- devNotes 5-22-16 topologies, voronoi baking
- devNotes 5-23-16 sound visualization, particle system instances, pivot rotations
- devNotes 5-24-16 Argos Brush, List performance, subFrame tweens
- devNotes 5-25-2016 GPU instancing, audio echo, list processing
- devNotes 5-26-16 quad pool, object reuse, memory management
- devNotes 5-27-16 sound processing, alignment and generation
- devNotes 5-28-16 sound generation, audio processing, harmonizer
- devNotes 5-29-16 Mic input, processing and recording
- devNotes 5-30-16 onFilterRead, windowing and FFTs
- devNotes 5-31-16 fundamental lock, voice tracking, harmonizing
- devNotes 6-01-16 Vuforia 5.5 base, gearVR and performance evaluation
- devNotes 6-02-16 AR sample, ARM performance and debug
- devNotes 6-03-16 native vuforia app structure, dev UI, look and feel
- devNotes 6-04-16 orientation, navigation, gyro, compass raw vector
- devNotes 6-05-16 android UI, handheld AR, Argos VU
- devNotes 6-06-16 GearVR pipeline, micInput, audio compression
- devNotes 6-07-16 audio latency, GearVR ui and mobile testing
- devNotes 6-08-16 texture writing, echo buffer performance, multi tracking
- devNotes 6-09-16 GearVR UI, Argos Sphere Indexing, AR UI Interactions
- devNotes 6-10-16 CLJ AR/VR composition, refinement, integrity
- devNotes 6-11-16 GearVR interface, parameter adjustment settings file, movement
- devNotes 6-12-16 VR lab, sound and partSys interfaces
- devNotes 6-13-16 echo interface, argos meshDraft levels, vertical processing
- devNotes 6-14-16 echo editor ui, argos mesh draft, phi
- devNotes 6-15-16 Sound Plot, Circular buffer, Echo Processing
- devNotes 6-16-16 pipeline back to vr, movement, sphere cursor
- devNotes 6-17-16 GearVR UI work, user movement and navigation
- devNotes 6-18-16 UI GearVR, devPipeline, radial menus
- devNotes 6-19-16 navigation into sphere, HUD, user experience
- devNotes 6-20-16 modal menu cycling, scroll plate, tap tap tap
- devNotes 6-21-16 json, scriptable objects, trackable movement, timing and placement
- devNotes 6-22-16 cursor swap, tool selection, editor functions
- devNotes 6-23-16 AR-VR transitions, singleton manager, ui modal dialog
- devNotes 6-24-16 OVR cursor canvas interaction – transitions – triggers
- devNotes 6-25-16 ioc – amvcc or application-model-view-controller-component
- devNotes 6-26-16 fsm mvc ui Trygve Reenskaug
- devNotes 6-27-16 mvc structure ui interaction
- devNotes 6-28-16 cursor ui interaction – sphere gaze intersection – cursor state
- devNotes 6-29-16 navigation UI state cursor follow
- devNotes 6/30/16 GearVR testing navigation sphere cursor states
- devNotes 7-01-16 sphere interaction cursor states voronoi
- devNotes 7-02-16 navigation OVR Camera rig movement
- devNotes 7-03-16 ui interaction navigation message processing
- devNotes 7-04-16 accordion 3d button selector – movement – sound follow
- devNotes 7-05-16 utility ui, survey, tools, json
- devNotes 7-06-16 MVC hierarchy, persistent storage, reload preferences
- devNotes 7-07-16 galaxy 7 usb debug – performance – initial tests
- devNotes 7-08-16 adb debug workflow
- dj ar initial
- cursor work
- The EU
- phi five alpha omega
- art forms in nature
- packings
- rendering pipeline and shaders
- manuals
- music
- news
- tango devNotes