From 6d803081050006614da46eaf929d1b0b5e0d8a8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Je=CC=81re=CC=81my=20Lacoche?= <jeremy.lacoche@orange.com> Date: Sun, 2 Mar 2025 21:38:02 +0100 Subject: [PATCH] add script editor to create AR scene prefab based on ARF Visuals --- Assets/Editor/ARSceneCreator.cs | 46 ++++++++++++++++++++++++++++ Assets/Editor/ARSceneCreator.cs.meta | 11 +++++++ Assets/ExtensionsAssets/Editor.meta | 8 +++++ 3 files changed, 65 insertions(+) create mode 100644 Assets/Editor/ARSceneCreator.cs create mode 100644 Assets/Editor/ARSceneCreator.cs.meta create mode 100644 Assets/ExtensionsAssets/Editor.meta diff --git a/Assets/Editor/ARSceneCreator.cs b/Assets/Editor/ARSceneCreator.cs new file mode 100644 index 0000000..0045b31 --- /dev/null +++ b/Assets/Editor/ARSceneCreator.cs @@ -0,0 +1,46 @@ +using Unity.VisualScripting; +using UnityEditor; +using UnityEngine; + +public class ARSceneCreator +{ + + [MenuItem("ARF/Create AR Scene")] + static void CreateARScene() + { + GameObject obj = GameObject.Find("ARF Visuals"); + + if (obj != null) + { + GameObject arScene = new GameObject("ARScene"); + + foreach(Transform trackableOrAnchor in obj.transform) + { + if (trackableOrAnchor.childCount > 2) + { + // go through all nodes (trackable or anchor) + GameObject node = new GameObject(trackableOrAnchor.name); + node.transform.parent = arScene.transform ; + AnchorTrackableReferenceNode referenceWA = node.AddComponent<AnchorTrackableReferenceNode>() ; + referenceWA._ARFNodeUUID = trackableOrAnchor.name ; + foreach(Transform asset in trackableOrAnchor) + { + if (asset.gameObject.name != "Axe" && asset.gameObject.name != "Canvas") + { + GameObject copyAsset = GameObject.Instantiate(asset.gameObject); + copyAsset.transform.parent = node.transform ; + copyAsset.transform.localPosition = asset.transform.localPosition; + copyAsset.transform.localRotation = asset.transform.localRotation; + copyAsset.transform.localScale = asset.transform.localScale; + asset.gameObject.SetActive(false); + } + } + } + } + } + else + { + Debug.Log("No ARF Visuals: can't create AR Scene"); + } + } +} diff --git a/Assets/Editor/ARSceneCreator.cs.meta b/Assets/Editor/ARSceneCreator.cs.meta new file mode 100644 index 0000000..3f5ef9a --- /dev/null +++ b/Assets/Editor/ARSceneCreator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 18bc366dbbcda4194b629565096e757a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ExtensionsAssets/Editor.meta b/Assets/ExtensionsAssets/Editor.meta new file mode 100644 index 0000000..b3e6dd2 --- /dev/null +++ b/Assets/ExtensionsAssets/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0109d0ba208a04e3da63874f19011f9b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: -- GitLab