summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Animations/TaSTT_Emerge_000.anim98
-rw-r--r--Animations/TaSTT_Emerge_100.anim143
-rw-r--r--GUI/GUI/GUI/PythonWrapper.cpp2
-rw-r--r--Scripts/libtastt.py24
-rw-r--r--Scripts/libunity.py3
-rw-r--r--Shaders/TaSTT_template.shader3
-rw-r--r--Shaders/ray_march.cginc39
7 files changed, 300 insertions, 12 deletions
diff --git a/Animations/TaSTT_Emerge_000.anim b/Animations/TaSTT_Emerge_000.anim
new file mode 100644
index 0000000..4cfce83
--- /dev/null
+++ b/Animations/TaSTT_Emerge_000.anim
@@ -0,0 +1,98 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!74 &7400000
+AnimationClip:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: TaSTT_Emerge_000
+ serializedVersion: 6
+ m_Legacy: 0
+ m_Compressed: 0
+ m_UseHighQualityCurve: 1
+ m_RotationCurves: []
+ m_CompressedRotationCurves: []
+ m_EulerCurves: []
+ m_PositionCurves: []
+ m_ScaleCurves: []
+ m_FloatCurves:
+ - curve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 3
+ time: 0
+ value: 0
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 136
+ weightedMode: 0
+ inWeight: 0
+ outWeight: 0
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 4
+ attribute: material.Ray_March_Emerge
+ path: World Constraint/Container/TaSTT
+ classID: 23
+ script: {fileID: 0}
+ m_PPtrCurves: []
+ m_SampleRate: 60
+ m_WrapMode: 0
+ m_Bounds:
+ m_Center: {x: 0, y: 0, z: 0}
+ m_Extent: {x: 0, y: 0, z: 0}
+ m_ClipBindingConstant:
+ genericBindings:
+ - serializedVersion: 2
+ path: 1272388438
+ attribute: 2395822321
+ script: {fileID: 0}
+ typeID: 23
+ customType: 22
+ isPPtrCurve: 0
+ pptrCurveMapping: []
+ m_AnimationClipSettings:
+ serializedVersion: 2
+ m_AdditiveReferencePoseClip: {fileID: 0}
+ m_AdditiveReferencePoseTime: 0
+ m_StartTime: 0
+ m_StopTime: 0
+ m_OrientationOffsetY: 0
+ m_Level: 0
+ m_CycleOffset: 0
+ m_HasAdditiveReferencePose: 0
+ m_LoopTime: 1
+ m_LoopBlend: 0
+ m_LoopBlendOrientation: 0
+ m_LoopBlendPositionY: 0
+ m_LoopBlendPositionXZ: 0
+ m_KeepOriginalOrientation: 0
+ m_KeepOriginalPositionY: 1
+ m_KeepOriginalPositionXZ: 0
+ m_HeightFromFeet: 0
+ m_Mirror: 0
+ m_EditorCurves:
+ - curve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 3
+ time: 0
+ value: 0
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 136
+ weightedMode: 0
+ inWeight: 0
+ outWeight: 0
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 4
+ attribute: material.Ray_March_Emerge
+ path: World Constraint/Container/TaSTT
+ classID: 23
+ script: {fileID: 0}
+ m_EulerEditorCurves: []
+ m_HasGenericRootTransform: 0
+ m_HasMotionFloatCurves: 0
+ m_Events: []
diff --git a/Animations/TaSTT_Emerge_100.anim b/Animations/TaSTT_Emerge_100.anim
new file mode 100644
index 0000000..493225f
--- /dev/null
+++ b/Animations/TaSTT_Emerge_100.anim
@@ -0,0 +1,143 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!74 &7400000
+AnimationClip:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: TaSTT_Emerge_100
+ serializedVersion: 6
+ m_Legacy: 0
+ m_Compressed: 0
+ m_UseHighQualityCurve: 1
+ m_RotationCurves: []
+ m_CompressedRotationCurves: []
+ m_EulerCurves: []
+ m_PositionCurves: []
+ m_ScaleCurves: []
+ m_FloatCurves:
+ - curve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 3
+ time: 0
+ value: 1
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 136
+ weightedMode: 0
+ inWeight: 0
+ outWeight: 0
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 4
+ attribute: material.Ray_March_Emerge
+ path: World Constraint/Container/TaSTT
+ classID: 23
+ script: {fileID: 0}
+ - curve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 3
+ time: 0
+ value: 1
+ inSlope: Infinity
+ outSlope: Infinity
+ tangentMode: 103
+ weightedMode: 0
+ inWeight: 0
+ outWeight: 0
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 4
+ attribute: m_IsActive
+ path: World Constraint/Container/TaSTT
+ classID: 1
+ script: {fileID: 0}
+ m_PPtrCurves: []
+ m_SampleRate: 60
+ m_WrapMode: 0
+ m_Bounds:
+ m_Center: {x: 0, y: 0, z: 0}
+ m_Extent: {x: 0, y: 0, z: 0}
+ m_ClipBindingConstant:
+ genericBindings:
+ - serializedVersion: 2
+ path: 1272388438
+ attribute: 2086281974
+ script: {fileID: 0}
+ typeID: 1
+ customType: 0
+ isPPtrCurve: 0
+ - serializedVersion: 2
+ path: 1272388438
+ attribute: 2395822321
+ script: {fileID: 0}
+ typeID: 23
+ customType: 22
+ isPPtrCurve: 0
+ pptrCurveMapping: []
+ m_AnimationClipSettings:
+ serializedVersion: 2
+ m_AdditiveReferencePoseClip: {fileID: 0}
+ m_AdditiveReferencePoseTime: 0
+ m_StartTime: 0
+ m_StopTime: 0
+ m_OrientationOffsetY: 0
+ m_Level: 0
+ m_CycleOffset: 0
+ m_HasAdditiveReferencePose: 0
+ m_LoopTime: 1
+ m_LoopBlend: 0
+ m_LoopBlendOrientation: 0
+ m_LoopBlendPositionY: 0
+ m_LoopBlendPositionXZ: 0
+ m_KeepOriginalOrientation: 0
+ m_KeepOriginalPositionY: 1
+ m_KeepOriginalPositionXZ: 0
+ m_HeightFromFeet: 0
+ m_Mirror: 0
+ m_EditorCurves:
+ - curve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 3
+ time: 0
+ value: 1
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 136
+ weightedMode: 0
+ inWeight: 0
+ outWeight: 0
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 4
+ attribute: material.Ray_March_Emerge
+ path: World Constraint/Container/TaSTT
+ classID: 23
+ script: {fileID: 0}
+ - curve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 3
+ time: 0
+ value: 1
+ inSlope: Infinity
+ outSlope: Infinity
+ tangentMode: 103
+ weightedMode: 0
+ inWeight: 0
+ outWeight: 0
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 4
+ attribute: m_IsActive
+ path: World Constraint/Container/TaSTT
+ classID: 1
+ script: {fileID: 0}
+ m_EulerEditorCurves: []
+ m_HasGenericRootTransform: 0
+ m_HasMotionFloatCurves: 0
+ m_Events: []
diff --git a/GUI/GUI/GUI/PythonWrapper.cpp b/GUI/GUI/GUI/PythonWrapper.cpp
index d1e684f..2b6443a 100644
--- a/GUI/GUI/GUI/PythonWrapper.cpp
+++ b/GUI/GUI/GUI/PythonWrapper.cpp
@@ -755,6 +755,7 @@ bool PythonWrapper::GenerateAnimator(
return false;
}
}
+#if 0
{
Log(out, "Adding enable/disable toggle... ");
if (!InvokeWithArgs({ libunity_path, "add_toggle",
@@ -766,6 +767,7 @@ bool PythonWrapper::GenerateAnimator(
return false;
}
}
+#endif
{
Log(out, "Merging with user animator... ");
if (!InvokeWithArgs({ libunity_path, "merge",
diff --git a/Scripts/libtastt.py b/Scripts/libtastt.py
index f205373..1cec20c 100644
--- a/Scripts/libtastt.py
+++ b/Scripts/libtastt.py
@@ -619,17 +619,19 @@ def generateFXLayer(which_layer: int, anim: libunity.UnityAnimator, layer:
# Returns a map containing the off and on states, as well as the
# transitions between them.
def generateToggle(layer_name: str,
+ parameter_name: str,
gen_anim_dir: str,
off_anim_basename: str,
on_anim_basename: str,
anim: libunity.UnityAnimator,
- guid_map: typing.Dict[str, str]) -> typing.Dict[str,
+ guid_map: typing.Dict[str, str],
+ duration_s: float = 0.0) -> typing.Dict[str,
libunity.UnityDocument]:
layer = anim.addLayer(layer_name)
# For simplicity, use the layer name as the parameter name.
- parameter_name = layer_name
- anim.addParameter(parameter_name, bool)
+ if parameter_name is not None:
+ anim.addParameter(parameter_name, bool)
off_state = anim.addAnimatorState(layer, layer_name + "_Off",
is_default_state = True)
@@ -647,11 +649,11 @@ def generateToggle(layer_name: str,
on_anim_meta.loadOrCreate(on_anim_path, guid_map)
anim.setAnimatorStateAnimation(on_state, on_anim_meta.guid)
- off_to_on_trans = anim.addTransition(on_state)
+ off_to_on_trans = anim.addTransition(on_state, duration_s)
anim.addTransitionBooleanCondition(off_state,
off_to_on_trans, parameter_name, True)
- on_to_off_trans = anim.addTransition(off_state)
+ on_to_off_trans = anim.addTransition(off_state, duration_s)
anim.addTransitionBooleanCondition(on_state,
on_to_off_trans, parameter_name, False)
@@ -700,6 +702,7 @@ def generateFX(guid_map, gen_anim_dir):
states = generateToggle(
generate_utils.getSpeechNoiseToggleParam(),
+ generate_utils.getSpeechNoiseToggleParam(),
gen_anim_dir,
"TaSTT_Speech_Noise_Off.anim",
"TaSTT_Speech_Noise_On.anim",
@@ -712,31 +715,42 @@ def generateFX(guid_map, gen_anim_dir):
states["off_to_on"], generate_utils.getToggleParam(), True)
generateToggle(generate_utils.getToggleParam(),
+ generate_utils.getToggleParam(),
gen_anim_dir,
"TaSTT_Toggle_Off.anim",
"TaSTT_Toggle_On.anim",
anim, guid_map)
generateToggle(generate_utils.getLockWorldParam(),
+ generate_utils.getLockWorldParam(),
gen_anim_dir,
"TaSTT_Lock_World_Disable.anim",
"TaSTT_Lock_World_Enable.anim",
anim, guid_map)
generateToggle(
generate_utils.getClearBoardParam(),
+ generate_utils.getClearBoardParam(),
gen_anim_dir,
None, # No animation in the `off` state.
generate_utils.getClearAnimationName() + ".anim",
anim, guid_map)
generateToggle(generate_utils.getIndicator0Param(),
+ generate_utils.getIndicator0Param(),
gen_anim_dir,
generate_utils.getIndicator0Param() + "_Off.anim",
generate_utils.getIndicator0Param() + "_On.anim",
anim, guid_map)
generateToggle(generate_utils.getIndicator1Param(),
+ generate_utils.getIndicator1Param(),
gen_anim_dir,
generate_utils.getIndicator1Param() + "_Off.anim",
generate_utils.getIndicator1Param() + "_On.anim",
anim, guid_map)
+ generateToggle(generate_utils.getToggleParam(),
+ None,
+ gen_anim_dir,
+ "TaSTT_Emerge_000.anim",
+ "TaSTT_Emerge_100.anim",
+ anim, guid_map)
generateScaleLayer(anim, gen_anim_dir, guid_map)
return anim
diff --git a/Scripts/libunity.py b/Scripts/libunity.py
index e94765d..bbf9498 100644
--- a/Scripts/libunity.py
+++ b/Scripts/libunity.py
@@ -727,7 +727,7 @@ class UnityAnimator():
return anim_state
- def addTransition(self, dst_state):
+ def addTransition(self, dst_state, dur_s = 0.0):
# Create animation state
parser = UnityParser()
parser.parse(TRANSITION_TEMPLATE)
@@ -740,6 +740,7 @@ class UnityAnimator():
node.anchor = str(new_id)
state = node.mapping['AnimatorStateTransition']
state.mapping['m_DstState'].mapping['fileID'] = dst_state.anchor
+ state.mapping['m_TransitionDuration'] = dur_s
self.nodes.append(node)
return node
diff --git a/Shaders/TaSTT_template.shader b/Shaders/TaSTT_template.shader
index 3c6feba..3a6dd2b 100644
--- a/Shaders/TaSTT_template.shader
+++ b/Shaders/TaSTT_template.shader
@@ -1,4 +1,4 @@
-Shader "yum_food/TaSTT_exp"
+Shader "TaSTT/Chatbox"
{
Properties
{
@@ -18,6 +18,7 @@
"Enable margin effect: Squares", float) = 0
[MaterialToggle] Enable_Ray_March(
"Enable ray marching", float) = 0
+ Ray_March_Emerge("Ray march emerge", Range(0, 1)) = 1.0
[MaterialToggle] Enable_Dithering("Enable dithering", float) = 1
diff --git a/Shaders/ray_march.cginc b/Shaders/ray_march.cginc
index 3dce6dd..95d09ac 100644
--- a/Shaders/ray_march.cginc
+++ b/Shaders/ray_march.cginc
@@ -10,6 +10,21 @@
#include "poi.cginc"
#include "stt_text.cginc"
+float Ray_March_Emerge;
+
+float get_phase_fraction(float r, float nth_phase, float n_phases) {
+ float stride = 1.0 / n_phases;
+
+ // Prevent boundary condition where saturated values get set to 0 by the
+ // glsl_mod below.
+ r = min(.9999 * (nth_phase + 1) * stride, r);
+
+ float r0 = clamp(r, nth_phase * stride, (nth_phase + 1) * stride);
+ r0 = glsl_mod(r0, stride);
+
+ return r0 / stride;
+}
+
float stt_map(float3 p, out float3 hsv, out float smoothness, out float alpha, out float2 text_uv)
{
hsv[0] = 0;
@@ -18,6 +33,10 @@ float stt_map(float3 p, out float3 hsv, out float smoothness, out float alpha, o
smoothness = 0.3;
alpha = 0;
+ float p0r = get_phase_fraction(Ray_March_Emerge, 0, 3);
+ float p1r = get_phase_fraction(Ray_March_Emerge, 1, 3);
+ float p2r = get_phase_fraction(Ray_March_Emerge, 2, 3);
+
float dist = 1000 * 1000 * 1000;
{
float3 pp = p;
@@ -25,7 +44,14 @@ float stt_map(float3 p, out float3 hsv, out float smoothness, out float alpha, o
pp.x -= 0.02;
pp.z -= 0.01;
- float d = distance_from_box_frame(pp, float3(6, .5, 3) * .003, .0002);
+ float box_thck = .0002;
+
+ float3 box_sz = float3(6, .5, 3) * .003;
+ box_sz.y = lerp(box_thck, box_sz.y, p0r) * p0r;
+ box_sz.x = lerp(box_thck, box_sz.x, p1r) * p0r;
+ box_sz.z = lerp(box_thck, box_sz.z, p2r) * p0r;
+
+ float d = distance_from_box_frame(pp, box_sz, box_thck);
alpha = (d < dist) * 1 + (d >= dist) * alpha;
dist = min(dist, d);
@@ -37,6 +63,12 @@ float stt_map(float3 p, out float3 hsv, out float smoothness, out float alpha, o
pp.z -= 0.01;
float3 box_scale = float3(.01, .0001, .005) * 1.6;
+
+ float p3r = get_phase_fraction(Ray_March_Emerge, 3, 4);
+ box_scale.x *= ceil(p3r);
+ box_scale.y *= ceil(p3r);
+ box_scale.z = lerp(0, box_scale.z, p3r);
+
float d = distance_from_box(pp, box_scale);
text_uv = (clamp(pp.xz, -1 * box_scale.xz, box_scale.xz) / box_scale.xz);
@@ -132,10 +164,7 @@ float4 stt_ray_march(inout v2f v2f_i, inout float depth)
//v2f_i.normal = old_normal;
}
- float4 background_color = float4(0, 0, 0, 0);
-
- float3 final_color = lerp(background_color.rgb, ray_march_color.rgb, ray_march_color.a);
- return float4(final_color, 1.0);
+ return ray_march_color;
}
#endif // __RAY_MARCH_INC__