Skip to content

Commit 6544565

Browse files
authored
Merge pull request mlavik1#45 from mlavik1/cross-section-improvements
Cross section improvements
2 parents 4a4d15f + 55e4d24 commit 6544565

19 files changed

+593
-42
lines changed

Assets/Editor/CrossSectionPlaneEditorWindow.cs

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,6 @@ namespace UnityVolumeRendering
55
{
66
public class CrossSectionPlaneEditorWindow : EditorWindow
77
{
8-
[MenuItem("Volume Rendering/Cross section")]
9-
static void OnMenuItemClick()
10-
{
11-
VolumeRenderedObject[] objects = GameObject.FindObjectsOfType<VolumeRenderedObject>();
12-
if (objects.Length == 1)
13-
VolumeObjectFactory.SpawnCrossSectionPlane(objects[0]);
14-
else
15-
{
16-
CrossSectionPlaneEditorWindow wnd = new CrossSectionPlaneEditorWindow();
17-
wnd.Show();
18-
}
19-
}
20-
218
private void OnGUI()
229
{
2310
VolumeRenderedObject[] spawnedObjects = GameObject.FindObjectsOfType<VolumeRenderedObject>();

Assets/Editor/VolumeRendererEditorFunctions.cs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,5 +80,26 @@ static void ShowSequenceImporter()
8080
Debug.LogError("Directory doesn't exist: " + dir);
8181
}
8282
}
83+
84+
[MenuItem("Volume Rendering/Cross section/Cross section plane")]
85+
static void OnMenuItemClick()
86+
{
87+
VolumeRenderedObject[] objects = GameObject.FindObjectsOfType<VolumeRenderedObject>();
88+
if (objects.Length == 1)
89+
VolumeObjectFactory.SpawnCrossSectionPlane(objects[0]);
90+
else
91+
{
92+
CrossSectionPlaneEditorWindow wnd = new CrossSectionPlaneEditorWindow();
93+
wnd.Show();
94+
}
95+
}
96+
97+
[MenuItem("Volume Rendering/Cross section/Box cutout")]
98+
static void SpawnCutoutBox()
99+
{
100+
VolumeRenderedObject[] objects = GameObject.FindObjectsOfType<VolumeRenderedObject>();
101+
if (objects.Length == 1)
102+
VolumeObjectFactory.SpawnCutoutBox(objects[0]);
103+
}
83104
}
84105
}
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
%YAML 1.1
2+
%TAG !u! tag:unity3d.com,2011:
3+
--- !u!21 &2100000
4+
Material:
5+
serializedVersion: 6
6+
m_ObjectHideFlags: 0
7+
m_CorrespondingSourceObject: {fileID: 0}
8+
m_PrefabInstance: {fileID: 0}
9+
m_PrefabAsset: {fileID: 0}
10+
m_Name: CrossSectionPlaneMat
11+
m_Shader: {fileID: 4800000, guid: be13da9a7b1929348b18627a539ef497, type: 3}
12+
m_ShaderKeywords: SLICEPLANE_ON _ALPHAPREMULTIPLY_ON
13+
m_LightmapFlags: 4
14+
m_EnableInstancingVariants: 0
15+
m_DoubleSidedGI: 0
16+
m_CustomRenderQueue: -1
17+
stringTagMap: {}
18+
disabledShaderPasses: []
19+
m_SavedProperties:
20+
serializedVersion: 3
21+
m_TexEnvs:
22+
- _BumpMap:
23+
m_Texture: {fileID: 0}
24+
m_Scale: {x: 1, y: 1}
25+
m_Offset: {x: 0, y: 0}
26+
- _DetailAlbedoMap:
27+
m_Texture: {fileID: 0}
28+
m_Scale: {x: 1, y: 1}
29+
m_Offset: {x: 0, y: 0}
30+
- _DetailMask:
31+
m_Texture: {fileID: 0}
32+
m_Scale: {x: 1, y: 1}
33+
m_Offset: {x: 0, y: 0}
34+
- _DetailNormalMap:
35+
m_Texture: {fileID: 0}
36+
m_Scale: {x: 1, y: 1}
37+
m_Offset: {x: 0, y: 0}
38+
- _EmissionMap:
39+
m_Texture: {fileID: 0}
40+
m_Scale: {x: 1, y: 1}
41+
m_Offset: {x: 0, y: 0}
42+
- _MainTex:
43+
m_Texture: {fileID: 2800000, guid: dd8e5417cf6e38d40b0c31c547f985ac, type: 3}
44+
m_Scale: {x: 1, y: 1}
45+
m_Offset: {x: 0, y: 0}
46+
- _MetallicGlossMap:
47+
m_Texture: {fileID: 0}
48+
m_Scale: {x: 1, y: 1}
49+
m_Offset: {x: 0, y: 0}
50+
- _OcclusionMap:
51+
m_Texture: {fileID: 0}
52+
m_Scale: {x: 1, y: 1}
53+
m_Offset: {x: 0, y: 0}
54+
- _ParallaxMap:
55+
m_Texture: {fileID: 0}
56+
m_Scale: {x: 1, y: 1}
57+
m_Offset: {x: 0, y: 0}
58+
m_Floats:
59+
- _BumpScale: 1
60+
- _Cutoff: 0.5
61+
- _DetailNormalMapScale: 1
62+
- _DstBlend: 10
63+
- _GlossMapScale: 1
64+
- _Glossiness: 0.5
65+
- _GlossyReflections: 1
66+
- _Metallic: 0
67+
- _Mode: 3
68+
- _OcclusionStrength: 1
69+
- _Parallax: 0.02
70+
- _SmoothnessTextureChannel: 0
71+
- _SpecularHighlights: 1
72+
- _SrcBlend: 1
73+
- _UVSec: 0
74+
- _ZWrite: 0
75+
m_Colors:
76+
- _Color: {r: 0.9150943, g: 0.07338022, b: 0.07338022, a: 1}
77+
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}

Assets/Materials/CrossSectionPlaneMat.mat.meta

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
%YAML 1.1
2+
%TAG !u! tag:unity3d.com,2011:
3+
--- !u!1 &5697153076470531463
4+
GameObject:
5+
m_ObjectHideFlags: 0
6+
m_CorrespondingSourceObject: {fileID: 0}
7+
m_PrefabInstance: {fileID: 0}
8+
m_PrefabAsset: {fileID: 0}
9+
serializedVersion: 6
10+
m_Component:
11+
- component: {fileID: 3122546165893029993}
12+
- component: {fileID: 7621817265638011433}
13+
- component: {fileID: 4756273696276402491}
14+
- component: {fileID: 2049453483492477609}
15+
m_Layer: 0
16+
m_Name: CrossSectionPlane
17+
m_TagString: Untagged
18+
m_Icon: {fileID: 0}
19+
m_NavMeshLayer: 0
20+
m_StaticEditorFlags: 0
21+
m_IsActive: 1
22+
--- !u!4 &3122546165893029993
23+
Transform:
24+
m_ObjectHideFlags: 0
25+
m_CorrespondingSourceObject: {fileID: 0}
26+
m_PrefabInstance: {fileID: 0}
27+
m_PrefabAsset: {fileID: 0}
28+
m_GameObject: {fileID: 5697153076470531463}
29+
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
30+
m_LocalPosition: {x: 0, y: 0, z: 0}
31+
m_LocalScale: {x: 1, y: 1, z: 1}
32+
m_Children: []
33+
m_Father: {fileID: 0}
34+
m_RootOrder: 0
35+
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
36+
--- !u!33 &7621817265638011433
37+
MeshFilter:
38+
m_ObjectHideFlags: 0
39+
m_CorrespondingSourceObject: {fileID: 0}
40+
m_PrefabInstance: {fileID: 0}
41+
m_PrefabAsset: {fileID: 0}
42+
m_GameObject: {fileID: 5697153076470531463}
43+
m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
44+
--- !u!23 &4756273696276402491
45+
MeshRenderer:
46+
m_ObjectHideFlags: 0
47+
m_CorrespondingSourceObject: {fileID: 0}
48+
m_PrefabInstance: {fileID: 0}
49+
m_PrefabAsset: {fileID: 0}
50+
m_GameObject: {fileID: 5697153076470531463}
51+
m_Enabled: 1
52+
m_CastShadows: 1
53+
m_ReceiveShadows: 1
54+
m_DynamicOccludee: 1
55+
m_MotionVectors: 1
56+
m_LightProbeUsage: 1
57+
m_ReflectionProbeUsage: 1
58+
m_RayTracingMode: 2
59+
m_RenderingLayerMask: 1
60+
m_RendererPriority: 0
61+
m_Materials:
62+
- {fileID: 2100000, guid: 6e564749dcca6944ca78723ffd119eca, type: 2}
63+
m_StaticBatchInfo:
64+
firstSubMesh: 0
65+
subMeshCount: 0
66+
m_StaticBatchRoot: {fileID: 0}
67+
m_ProbeAnchor: {fileID: 0}
68+
m_LightProbeVolumeOverride: {fileID: 0}
69+
m_ScaleInLightmap: 1
70+
m_ReceiveGI: 1
71+
m_PreserveUVs: 0
72+
m_IgnoreNormalsForChartDetection: 0
73+
m_ImportantGI: 0
74+
m_StitchLightmapSeams: 1
75+
m_SelectedEditorRenderState: 3
76+
m_MinimumChartSize: 4
77+
m_AutoUVMaxDistance: 0.5
78+
m_AutoUVMaxAngle: 89
79+
m_LightmapParameters: {fileID: 0}
80+
m_SortingLayerID: 0
81+
m_SortingLayer: 0
82+
m_SortingOrder: 0
83+
--- !u!114 &2049453483492477609
84+
MonoBehaviour:
85+
m_ObjectHideFlags: 0
86+
m_CorrespondingSourceObject: {fileID: 0}
87+
m_PrefabInstance: {fileID: 0}
88+
m_PrefabAsset: {fileID: 0}
89+
m_GameObject: {fileID: 5697153076470531463}
90+
m_Enabled: 1
91+
m_EditorHideFlags: 0
92+
m_Script: {fileID: 11500000, guid: 030645f63ce11d14ea77ce39291d70da, type: 3}
93+
m_Name:
94+
m_EditorClassIdentifier:
95+
targetObject: {fileID: 0}

Assets/Resources/CrossSectionPlane.prefab.meta

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/Resources/CutoutBox.prefab

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
%YAML 1.1
2+
%TAG !u! tag:unity3d.com,2011:
3+
--- !u!1 &3923763609855477888
4+
GameObject:
5+
m_ObjectHideFlags: 0
6+
m_CorrespondingSourceObject: {fileID: 0}
7+
m_PrefabInstance: {fileID: 0}
8+
m_PrefabAsset: {fileID: 0}
9+
serializedVersion: 6
10+
m_Component:
11+
- component: {fileID: 6395997655089519251}
12+
- component: {fileID: 4693973390399920385}
13+
- component: {fileID: 486768037272836538}
14+
- component: {fileID: 9069229388242967652}
15+
m_Layer: 0
16+
m_Name: CutoutBox
17+
m_TagString: Untagged
18+
m_Icon: {fileID: 0}
19+
m_NavMeshLayer: 0
20+
m_StaticEditorFlags: 0
21+
m_IsActive: 1
22+
--- !u!4 &6395997655089519251
23+
Transform:
24+
m_ObjectHideFlags: 0
25+
m_CorrespondingSourceObject: {fileID: 0}
26+
m_PrefabInstance: {fileID: 0}
27+
m_PrefabAsset: {fileID: 0}
28+
m_GameObject: {fileID: 3923763609855477888}
29+
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
30+
m_LocalPosition: {x: 0.05694554, y: -0.02139771, z: -0.022755325}
31+
m_LocalScale: {x: 0.3, y: 0.3, z: 0.3}
32+
m_Children: []
33+
m_Father: {fileID: 0}
34+
m_RootOrder: 0
35+
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
36+
--- !u!33 &4693973390399920385
37+
MeshFilter:
38+
m_ObjectHideFlags: 0
39+
m_CorrespondingSourceObject: {fileID: 0}
40+
m_PrefabInstance: {fileID: 0}
41+
m_PrefabAsset: {fileID: 0}
42+
m_GameObject: {fileID: 3923763609855477888}
43+
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
44+
--- !u!23 &486768037272836538
45+
MeshRenderer:
46+
m_ObjectHideFlags: 0
47+
m_CorrespondingSourceObject: {fileID: 0}
48+
m_PrefabInstance: {fileID: 0}
49+
m_PrefabAsset: {fileID: 0}
50+
m_GameObject: {fileID: 3923763609855477888}
51+
m_Enabled: 1
52+
m_CastShadows: 1
53+
m_ReceiveShadows: 1
54+
m_DynamicOccludee: 1
55+
m_MotionVectors: 1
56+
m_LightProbeUsage: 1
57+
m_ReflectionProbeUsage: 1
58+
m_RayTracingMode: 2
59+
m_RenderingLayerMask: 1
60+
m_RendererPriority: 0
61+
m_Materials:
62+
- {fileID: 2100000, guid: 6e564749dcca6944ca78723ffd119eca, type: 2}
63+
m_StaticBatchInfo:
64+
firstSubMesh: 0
65+
subMeshCount: 0
66+
m_StaticBatchRoot: {fileID: 0}
67+
m_ProbeAnchor: {fileID: 0}
68+
m_LightProbeVolumeOverride: {fileID: 0}
69+
m_ScaleInLightmap: 1
70+
m_ReceiveGI: 1
71+
m_PreserveUVs: 0
72+
m_IgnoreNormalsForChartDetection: 0
73+
m_ImportantGI: 0
74+
m_StitchLightmapSeams: 1
75+
m_SelectedEditorRenderState: 3
76+
m_MinimumChartSize: 4
77+
m_AutoUVMaxDistance: 0.5
78+
m_AutoUVMaxAngle: 89
79+
m_LightmapParameters: {fileID: 0}
80+
m_SortingLayerID: 0
81+
m_SortingLayer: 0
82+
m_SortingOrder: 0
83+
--- !u!114 &9069229388242967652
84+
MonoBehaviour:
85+
m_ObjectHideFlags: 0
86+
m_CorrespondingSourceObject: {fileID: 0}
87+
m_PrefabInstance: {fileID: 0}
88+
m_PrefabAsset: {fileID: 0}
89+
m_GameObject: {fileID: 3923763609855477888}
90+
m_Enabled: 1
91+
m_EditorHideFlags: 0
92+
m_Script: {fileID: 11500000, guid: 7401967f0dd72374ea6df35ee454fb53, type: 3}
93+
m_Name:
94+
m_EditorClassIdentifier:
95+
targetObject: {fileID: 0}
96+
cutoutType: 0

Assets/Resources/CutoutBox.prefab.meta

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/Scripts/GUI/Components/EditSliceGUI.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/Scripts/VolumeObject/CrossSectionPlane.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public class CrossSectionPlane : MonoBehaviour
1717
private void OnDisable()
1818
{
1919
if (targetObject != null)
20-
targetObject.meshRenderer.sharedMaterial.DisableKeyword("SLICEPLANE_ON");
20+
targetObject.meshRenderer.sharedMaterial.DisableKeyword("CUTOUT_PLANE");
2121
}
2222

2323
private void Update()
@@ -27,9 +27,8 @@ private void Update()
2727

2828
Material mat = targetObject.meshRenderer.sharedMaterial;
2929

30-
mat.EnableKeyword("SLICEPLANE_ON");
31-
mat.SetVector("_PlanePos", targetObject.transform.position - transform.position);
32-
mat.SetVector("_PlaneNormal", transform.forward);
30+
mat.EnableKeyword("CUTOUT_PLANE");
31+
mat.SetMatrix("_CrossSectionMatrix", transform.worldToLocalMatrix * targetObject.transform.localToWorldMatrix);
3332
}
3433
}
3534
}

0 commit comments

Comments
 (0)