View convert-audio.sh
#! /bin/bash | |
# This command converts audio according to the specifications listed in the Spark docs: | |
# https://sparkar.facebook.com/ar-studio/learn/documentation/docs/audio | |
# mono m4a, 44.1kHz sample rate, 16-bit-depth resolution | |
# Usage: | |
# convert-audio.sh myaudio.mp3 converted.m4a | |
# Notes: | |
# Always use m4a for output file type | |
# Change "64k" to a higher value to improve bitrate/quality. e.g. 96k 128k 192k |
View Face Parts to UV Coords
const D = require('Diagnostics'); | |
const Scene = require('Scene'); | |
const Patches = require('Patches'); | |
const FaceTracking = require('FaceTracking'); | |
const Shaders = require('Shaders'); | |
const R = require('Reactive'); | |
const Patchers = require('Patches'); | |
const face = FaceTracking.face(0); | |
const rect = Scene.root.find("rectangle0"); | |
const cam = Scene.root.find("Camera"); |
View Spark AR: Reflection Shader in JS
const Diagnostics = require('Diagnostics'); | |
const Scene = require('Scene'); | |
const Shaders = require('Shaders'); | |
const Materials = require("Materials"); | |
const R = require("Reactive"); | |
const CameraInfo = require('CameraInfo'); | |
const Textures = require('Textures'); | |
const Time = require('Time'); | |
const mat = Materials.get("material0"); | |
const cameraTexture = Textures.get("cameraTexture0"); |
View Spark AR: Visual Shader in JS
const Diagnostics = require('Diagnostics'); | |
const Scene = require('Scene'); | |
const Shaders = require('Shaders'); | |
const Materials = require("Materials"); | |
const R = require("Reactive"); | |
const CameraInfo = require('CameraInfo'); | |
const Textures = require('Textures'); | |
const mat = Materials.get("material0"); | |
const cameraTexture = Textures.get("cameraTexture0"); |
View Spark AR - Set 3D element to the position of the mouth
// How to load in modules | |
const FaceTracking = require('FaceTracking'); | |
const D = require('Diagnostics'); | |
const Scene = require('Scene'); | |
const TouchGestures = require('TouchGestures'); | |
const object = Scene.root.find("object"); | |
face.mouth.openness.monitor().subscribe(function(event) { | |
if(event.newValue > 0) { | |
object.transform.x = FaceTracking.face(0).cameraTransform.applyTo(FaceTracking.face(0).mouth.center).x; |
View WorldToCanvasPosition.cs
Vector2 screenPos = camera.WorldToViewportPoint( worldPosition ); | |
screenPos.x *= guiCanvas.rect.width; | |
screenPos.y *= guiCanvas.rect.height; | |
// the element should be anchored bottom/left | |
uiElement.anchoredPosition = screenPos; |
View FlatSubdivide.js
// Triangle Subdivision based on http://wiki.unity3d.com/index.php?title=MeshHelper | |
// There is not smoothing of any sort, it will just divide the triangles | |
// hence the FlatSubdivide name | |
THREE.FlatSubdivide = function () { | |
}; | |
// Applies the "modify" pattern |
View AssetPathAttribute.cs
using UnityEngine; | |
using System; | |
using System.Collections; | |
public class AssetPathAttribute : PropertyAttribute { | |
System.Type type; | |
string label; | |
public bool isResource; | |
public AssetPathAttribute(string l, System.Type t, bool isR) { |
View RaycastCollisionDetection.cs
using com.mindshaft.overtime.collision; | |
using UnityEngine; | |
namespace com.mindshaft.overtime.physics { | |
public class RaycastCollisionDetection : IEntityCollisionDetection { | |
private BoxCollider _collider; | |
private Rect _collisionRect; | |
private LayerMask _collisionMask; | |
private LayerMask _playerMask; |
View AssetProcessing.cs
using UnityEngine; | |
using UnityEditor; | |
public enum TextureType { | |
NONE = -1, | |
GUI = 0, | |
CHARACTERS = 1 | |
} | |
public class AssetProcessing : AssetPostprocessor { |
NewerOlder