forked from cgvr/DeltaVR
Compare commits
76 Commits
SamWorkset
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 90781191b7 | |||
| 5796887f79 | |||
| 0cb92b2442 | |||
| 32a5e4f332 | |||
| 5956b9508d | |||
| 7be20d249e | |||
| 9c7536d1d4 | |||
| 0c026078d0 | |||
| 843bd141eb | |||
| 408949e5c2 | |||
| 40e273f51e | |||
| a66cb8f62c | |||
| cc3c481295 | |||
| 2980631414 | |||
| c15ae24c7a | |||
| 7f02dccc6b | |||
| 34a6c50598 | |||
| 191c9e66fe | |||
| d7fec73c77 | |||
| 590c62eadd | |||
| fdd4ff827e | |||
| d2e1c7b56f | |||
| 09f764c0df | |||
| 447449e1b3 | |||
| d43408cf01 | |||
|
|
9bfc55f2d6 | ||
|
|
1b0d9fd0b0 | ||
|
|
f8ca8570af | ||
| e25f1c75b5 | |||
| c5c40f58ab | |||
|
|
2971027af2 | ||
|
|
34a23ab94d | ||
|
|
8b3965d0b1 | ||
| 42d7c0059b | |||
|
|
6413d5a3d6 | ||
|
|
e4f9423ca6 | ||
|
|
1bb878848f | ||
|
|
ae497eac6e | ||
|
|
2cf0a9f711 | ||
| 6b8c3b6fbb | |||
| b9448fb4c7 | |||
| 4b1d8ea5bd | |||
| 6a76fa038f | |||
| 8af4eff8c7 | |||
| b38461fc52 | |||
| e5baba75cf | |||
| b9515d50d0 | |||
| e06b0206c8 | |||
| f5ba95849e | |||
| c5b90be63f | |||
| 5a41559b88 | |||
| 5ab753f4b5 | |||
| dab664b62a | |||
| 9d389a3296 | |||
| d269226b4b | |||
| 47d505a1ba | |||
| e7ad8e6fd4 | |||
| 36e3b95645 | |||
| b012ae17b2 | |||
| b9ccfb1c3a | |||
| cdd6a2e96d | |||
| 9af005b651 | |||
| e9b013a904 | |||
| 262a67293e | |||
| ab2406c367 | |||
| 0f409ddb08 | |||
| 4aa139be24 | |||
| b4c665abe4 | |||
|
|
b84e1b7837 | ||
|
|
e9fe4cb559 | ||
| d2673f52e1 | |||
| e6045f7775 | |||
| e6ddcc7390 | |||
| 75cfdd7a48 | |||
|
|
071c1db4f4 | ||
|
|
9bd8601edb |
5
3d-generation-pipeline/.env.example
Normal file
5
3d-generation-pipeline/.env.example
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
3D_GENERATION_URL=
|
||||||
|
MODEL_FOLDER=
|
||||||
|
|
||||||
|
CLOUDFLARE_ACCOUNT_ID=
|
||||||
|
CLOUDFLARE_API_TOKEN=
|
||||||
7
3d-generation-pipeline/.gitignore
vendored
Normal file
7
3d-generation-pipeline/.gitignore
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
.venv
|
||||||
|
.env
|
||||||
|
__pycache__
|
||||||
|
images/
|
||||||
|
models/
|
||||||
|
logs/
|
||||||
|
notebooks/test_resources/
|
||||||
6
3d-generation-pipeline/README.md
Normal file
6
3d-generation-pipeline/README.md
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
### TODO
|
||||||
|
* Artikkel text-to-3d prompt engineeringu kohta: "Sel3DCraft: Interactive Visual Prompts for User-Friendly Text-to-3D Generation"
|
||||||
|
* TRELLIS: postprocessing_utils: texture baking mode: 'opt' vs 'fast' - hardcoded 'opt', kui võimaldada 'fast' siis tuleb error
|
||||||
|
|
||||||
|
### Notes
|
||||||
|
* TRELLIS: added functionality to specify texture baking optimisation total steps as an argument (`texture_opt_total_steps`), to replace the hardcoded 2500. But this is not tracked in Git (because modified this https://github.com/IgorAherne/trellis-stable-projectorz/releases/tag/latest)
|
||||||
61
3d-generation-pipeline/cloudflare_api.py
Normal file
61
3d-generation-pipeline/cloudflare_api.py
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
import base64
|
||||||
|
import requests
|
||||||
|
import os
|
||||||
|
|
||||||
|
from dotenv import load_dotenv
|
||||||
|
|
||||||
|
load_dotenv()
|
||||||
|
ACCOUNT_ID = os.environ["CLOUDFLARE_ACCOUNT_ID"]
|
||||||
|
API_TOKEN = os.environ["CLOUDFLARE_API_TOKEN"]
|
||||||
|
|
||||||
|
def text_to_image_cloudflare(prompt, output_path):
|
||||||
|
MODEL = "@cf/black-forest-labs/flux-1-schnell"
|
||||||
|
URL = f"https://api.cloudflare.com/client/v4/accounts/{ACCOUNT_ID}/ai/run/{MODEL}"
|
||||||
|
|
||||||
|
payload = {
|
||||||
|
"prompt": prompt,
|
||||||
|
}
|
||||||
|
|
||||||
|
headers = {
|
||||||
|
"Authorization": f"Bearer {API_TOKEN}",
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
}
|
||||||
|
|
||||||
|
resp = requests.post(URL, json=payload, headers=headers, timeout=60)
|
||||||
|
resp.raise_for_status()
|
||||||
|
|
||||||
|
data = resp.json()
|
||||||
|
b64 = data["result"]["image"]
|
||||||
|
if not b64:
|
||||||
|
raise RuntimeError(f"Unexpected response structure: {data}")
|
||||||
|
|
||||||
|
img_bytes = base64.b64decode(b64)
|
||||||
|
|
||||||
|
with open(output_path, "wb") as f:
|
||||||
|
f.write(img_bytes)
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
def refine_text_prompt(prompt):
|
||||||
|
MODEL = "@cf/meta/llama-3.2-3b-instruct"
|
||||||
|
URL = f"https://api.cloudflare.com/client/v4/accounts/{ACCOUNT_ID}/ai/run/{MODEL}"
|
||||||
|
|
||||||
|
instructions = """
|
||||||
|
User is talking about some object. Your task is to generate a short and concise description of it. Use only user's own words, keep it as short as possible.
|
||||||
|
Example:
|
||||||
|
User: 'Umm, okay, I would like a really cool sword, with for example a bright orange crossguard. And also it should be slightly curved.'
|
||||||
|
You: 'a slightly curved sword with bright orange crossguard'
|
||||||
|
"""
|
||||||
|
|
||||||
|
response = requests.post(URL,
|
||||||
|
headers={"Authorization": f"Bearer {API_TOKEN}"},
|
||||||
|
json={
|
||||||
|
"messages": [
|
||||||
|
{"role": "system", "content": instructions},
|
||||||
|
{"role": "user", "content": prompt}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
)
|
||||||
|
data = response.json()
|
||||||
|
return data["result"]["response"]
|
||||||
86
3d-generation-pipeline/generate_image_local.py
Normal file
86
3d-generation-pipeline/generate_image_local.py
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
import requests
|
||||||
|
|
||||||
|
from invokeai_mcp_server import create_text2img_graph, enqueue_graph, wait_for_completion, get_image_url
|
||||||
|
from urllib.parse import urljoin
|
||||||
|
|
||||||
|
|
||||||
|
INVOKEAI_BASE_URL = "http://127.0.0.1:9090"
|
||||||
|
|
||||||
|
|
||||||
|
async def generate_image(arguments: dict):
|
||||||
|
|
||||||
|
# Extract parameters
|
||||||
|
prompt = arguments["prompt"]
|
||||||
|
negative_prompt = arguments.get("negative_prompt", "")
|
||||||
|
width = arguments.get("width", 512)
|
||||||
|
height = arguments.get("height", 512)
|
||||||
|
steps = arguments.get("steps", 30)
|
||||||
|
cfg_scale = arguments.get("cfg_scale", 7.5)
|
||||||
|
scheduler = arguments.get("scheduler", "euler")
|
||||||
|
seed = arguments.get("seed")
|
||||||
|
model_key = arguments.get("model_key")
|
||||||
|
lora_key = arguments.get("lora_key")
|
||||||
|
lora_weight = arguments.get("lora_weight", 1.0)
|
||||||
|
vae_key = arguments.get("vae_key")
|
||||||
|
|
||||||
|
print(f"Generating image with prompt: {prompt[:50]}...")
|
||||||
|
|
||||||
|
# Create graph
|
||||||
|
graph = await create_text2img_graph(
|
||||||
|
prompt=prompt,
|
||||||
|
negative_prompt=negative_prompt,
|
||||||
|
model_key=model_key,
|
||||||
|
lora_key=lora_key,
|
||||||
|
lora_weight=lora_weight,
|
||||||
|
vae_key=vae_key,
|
||||||
|
width=width,
|
||||||
|
height=height,
|
||||||
|
steps=steps,
|
||||||
|
cfg_scale=cfg_scale,
|
||||||
|
scheduler=scheduler,
|
||||||
|
seed=seed
|
||||||
|
)
|
||||||
|
|
||||||
|
# Enqueue and wait for completion
|
||||||
|
result = await enqueue_graph(graph)
|
||||||
|
batch_id = result["batch"]["batch_id"]
|
||||||
|
|
||||||
|
print(f"Enqueued batch {batch_id}, waiting for completion...")
|
||||||
|
|
||||||
|
completed = await wait_for_completion(batch_id)
|
||||||
|
|
||||||
|
# Extract image name from result
|
||||||
|
if "result" in completed and "outputs" in completed["result"]:
|
||||||
|
outputs = completed["result"]["outputs"]
|
||||||
|
# Find the image output
|
||||||
|
for node_id, output in outputs.items():
|
||||||
|
if output.get("type") == "image_output":
|
||||||
|
image_name = output["image"]["image_name"]
|
||||||
|
image_url = await get_image_url(image_name)
|
||||||
|
|
||||||
|
return urljoin(INVOKEAI_BASE_URL, image_url)
|
||||||
|
|
||||||
|
raise RuntimeError("Failed to generate image!")
|
||||||
|
|
||||||
|
def download_file(url, filepath):
|
||||||
|
response = requests.get(url)
|
||||||
|
|
||||||
|
if response.status_code == 200:
|
||||||
|
with open(filepath, "wb") as file:
|
||||||
|
file.write(response.content)
|
||||||
|
else:
|
||||||
|
raise RuntimeError(f"Failed to download image. Status code: {response.status_code}")
|
||||||
|
|
||||||
|
|
||||||
|
async def text_to_image_invoke_ai(prompt, output_path):
|
||||||
|
# see available model keys via GET http://127.0.0.1:9090/api/v2/models/?model_type=main
|
||||||
|
args = {
|
||||||
|
"prompt": prompt,
|
||||||
|
"width": 512,
|
||||||
|
"height": 512,
|
||||||
|
"model_key": "79401292-0a6b-428d-b7d7-f1e86caeba2b" # Juggernaut XL v9
|
||||||
|
#"model_key": "735f6485-6703-498f-929e-07cf0bbbd179" # Dreamshaper 8
|
||||||
|
}
|
||||||
|
image_url = await generate_image(args)
|
||||||
|
print("got image url: ", image_url)
|
||||||
|
download_file(image_url, output_path)
|
||||||
97
3d-generation-pipeline/generate_model_local.py
Normal file
97
3d-generation-pipeline/generate_model_local.py
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
import subprocess
|
||||||
|
import os
|
||||||
|
import time
|
||||||
|
import requests
|
||||||
|
import base64
|
||||||
|
|
||||||
|
from dotenv import load_dotenv
|
||||||
|
|
||||||
|
load_dotenv()
|
||||||
|
MODEL_FOLDER = os.environ["MODEL_FOLDER"]
|
||||||
|
API_URL = os.environ["3D_GENERATION_URL"]
|
||||||
|
|
||||||
|
|
||||||
|
def image_to_3d_subprocess(image_path, output_path):
|
||||||
|
venv_python = MODEL_FOLDER + r"\.venv\Scripts\python.exe"
|
||||||
|
script_path = MODEL_FOLDER + r"\run.py"
|
||||||
|
|
||||||
|
args = [image_path, "--output-dir", output_path]
|
||||||
|
command = [venv_python, script_path] + args
|
||||||
|
|
||||||
|
try:
|
||||||
|
# Run the subprocess
|
||||||
|
result = subprocess.run(command, capture_output=True, text=True)
|
||||||
|
|
||||||
|
# Print output and errors
|
||||||
|
print("STDOUT:\n", result.stdout)
|
||||||
|
print("STDERR:\n", result.stderr)
|
||||||
|
print("Return Code:", result.returncode)
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Error occurred: {e}")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def generate_no_preview(image_base64: str):
|
||||||
|
"""Generate 3D model from a single base64-encoded image without previews.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
image_base64: Base64 string of the image (without 'data:image/...' prefix)
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
# Set generation parameters
|
||||||
|
params = {
|
||||||
|
'image_base64': image_base64,
|
||||||
|
'seed': 42,
|
||||||
|
'ss_guidance_strength': 7.5,
|
||||||
|
'ss_sampling_steps': 10,
|
||||||
|
'slat_guidance_strength': 7.5,
|
||||||
|
'slat_sampling_steps': 10,
|
||||||
|
'mesh_simplify_ratio': 0.99,
|
||||||
|
'texture_size': 1024,
|
||||||
|
#'texture_baking_mode': 'opt',
|
||||||
|
'texture_opt_total_steps': 1000,
|
||||||
|
'output_format': 'glb'
|
||||||
|
}
|
||||||
|
|
||||||
|
# Start generation
|
||||||
|
print("Starting generation...")
|
||||||
|
response = requests.post(f"{API_URL}/generate_no_preview", data=params)
|
||||||
|
response.raise_for_status()
|
||||||
|
|
||||||
|
# Poll status until complete
|
||||||
|
while True:
|
||||||
|
status = requests.get(f"{API_URL}/status").json()
|
||||||
|
print(f"Progress: {status['progress']}%")
|
||||||
|
|
||||||
|
if status['status'] == 'COMPLETE':
|
||||||
|
break
|
||||||
|
elif status['status'] == 'FAILED':
|
||||||
|
raise Exception(f"Generation failed: {status['message']}")
|
||||||
|
|
||||||
|
time.sleep(1)
|
||||||
|
|
||||||
|
# Download the model
|
||||||
|
print("Downloading model...")
|
||||||
|
response = requests.get(f"{API_URL}/download/model")
|
||||||
|
response.raise_for_status()
|
||||||
|
return response.content
|
||||||
|
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Error: {str(e)}")
|
||||||
|
return None
|
||||||
|
|
||||||
|
def image_to_3d_api(image_path, output_path):
|
||||||
|
with open(image_path, 'rb') as image_file:
|
||||||
|
image_data = image_file.read()
|
||||||
|
|
||||||
|
base64_encoded = base64.b64encode(image_data).decode('utf-8')
|
||||||
|
model_binary = generate_no_preview(base64_encoded)
|
||||||
|
|
||||||
|
output_file = f"{output_path}.glb"
|
||||||
|
with open(output_file, 'wb') as f:
|
||||||
|
f.write(model_binary)
|
||||||
|
|
||||||
|
return output_file
|
||||||
|
|
||||||
153
3d-generation-pipeline/notebooks/cloudflare_API_test.ipynb
Normal file
153
3d-generation-pipeline/notebooks/cloudflare_API_test.ipynb
Normal file
@@ -0,0 +1,153 @@
|
|||||||
|
{
|
||||||
|
"cells": [
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 1,
|
||||||
|
"id": "1dc6faae",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"import os\n",
|
||||||
|
"import base64\n",
|
||||||
|
"import requests\n",
|
||||||
|
"from dotenv import load_dotenv"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 2,
|
||||||
|
"id": "b3107275",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"load_dotenv()\n",
|
||||||
|
"\n",
|
||||||
|
"ACCOUNT_ID = os.environ[\"CLOUDFLARE_ACCOUNT_ID\"]\n",
|
||||||
|
"API_TOKEN = os.environ[\"CLOUDFLARE_API_TOKEN\"]"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"id": "999adf95",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"## Text to image"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"id": "40b35163",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"Saved: test_resources/resolution_test_1.jpg (315728 bytes)\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"# https://developers.cloudflare.com/workers-ai/models/flux-1-schnell/\n",
|
||||||
|
"\n",
|
||||||
|
"MODEL = \"@cf/black-forest-labs/flux-1-schnell\"\n",
|
||||||
|
"URL = f\"https://api.cloudflare.com/client/v4/accounts/{ACCOUNT_ID}/ai/run/{MODEL}\"\n",
|
||||||
|
"\n",
|
||||||
|
"payload = {\n",
|
||||||
|
" \"prompt\": \"cyborg crocodile, realistic style, single object, front and side fully visible, plain neutral background, clear details, soft studio lighting, true-to-scale\",\n",
|
||||||
|
"}\n",
|
||||||
|
"\n",
|
||||||
|
"headers = {\n",
|
||||||
|
" \"Authorization\": f\"Bearer {API_TOKEN}\",\n",
|
||||||
|
" \"Content-Type\": \"application/json\",\n",
|
||||||
|
"}\n",
|
||||||
|
"\n",
|
||||||
|
"resp = requests.post(URL, json=payload, headers=headers, timeout=60)\n",
|
||||||
|
"resp.raise_for_status()\n",
|
||||||
|
"\n",
|
||||||
|
"data = resp.json()\n",
|
||||||
|
"b64 = data[\"result\"][\"image\"]\n",
|
||||||
|
"if not b64:\n",
|
||||||
|
" raise RuntimeError(f\"Unexpected response structure: {data}\")\n",
|
||||||
|
"\n",
|
||||||
|
"img_bytes = base64.b64decode(b64)\n",
|
||||||
|
"\n",
|
||||||
|
"out_path = \"test_resources/resolution_test_1.jpg\"\n",
|
||||||
|
"with open(out_path, \"wb\") as f:\n",
|
||||||
|
" f.write(img_bytes)\n",
|
||||||
|
"\n",
|
||||||
|
"print(f\"Saved: {out_path} ({len(img_bytes)} bytes)\")"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"id": "14a874c4",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"## Text prompt refinement"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 13,
|
||||||
|
"id": "485f6f46",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"\"dark wooden battleaxe with bronze blade\"\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"MODEL = \"@cf/meta/llama-3.2-3b-instruct\"\n",
|
||||||
|
"URL = f\"https://api.cloudflare.com/client/v4/accounts/{ACCOUNT_ID}/ai/run/{MODEL}\"\n",
|
||||||
|
"\n",
|
||||||
|
"instructions = \"\"\"\n",
|
||||||
|
"User is talking about some object. Your task is to generate a short and concise description of it. Use only user's own words, keep it as short as possible.\n",
|
||||||
|
"Example:\n",
|
||||||
|
"User: 'Umm, okay, I would like a really cool sword, with for example a bright orange crossguard. And also it should be slightly curved.'\n",
|
||||||
|
"You: 'a slightly curved sword with bright orange crossguard'\n",
|
||||||
|
"\"\"\"\n",
|
||||||
|
"prompt = \"Umm, alright, can you please give me an epic battleaxe? It should have a dark wooden shaft and bronze blade.\"\n",
|
||||||
|
"\n",
|
||||||
|
"response = requests.post(URL,\n",
|
||||||
|
" headers={\"Authorization\": f\"Bearer {API_TOKEN}\"},\n",
|
||||||
|
" json={\n",
|
||||||
|
" \"messages\": [\n",
|
||||||
|
" {\"role\": \"system\", \"content\": instructions},\n",
|
||||||
|
" {\"role\": \"user\", \"content\": prompt}\n",
|
||||||
|
" ]\n",
|
||||||
|
" }\n",
|
||||||
|
")\n",
|
||||||
|
"data = response.json()\n",
|
||||||
|
"result_text = data[\"result\"][\"response\"]\n",
|
||||||
|
"print(result_text)"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"kernelspec": {
|
||||||
|
"display_name": ".venv",
|
||||||
|
"language": "python",
|
||||||
|
"name": "python3"
|
||||||
|
},
|
||||||
|
"language_info": {
|
||||||
|
"codemirror_mode": {
|
||||||
|
"name": "ipython",
|
||||||
|
"version": 3
|
||||||
|
},
|
||||||
|
"file_extension": ".py",
|
||||||
|
"mimetype": "text/x-python",
|
||||||
|
"name": "python",
|
||||||
|
"nbconvert_exporter": "python",
|
||||||
|
"pygments_lexer": "ipython3",
|
||||||
|
"version": "3.10.11"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nbformat": 4,
|
||||||
|
"nbformat_minor": 5
|
||||||
|
}
|
||||||
122
3d-generation-pipeline/notebooks/local_image_generation.ipynb
Normal file
122
3d-generation-pipeline/notebooks/local_image_generation.ipynb
Normal file
@@ -0,0 +1,122 @@
|
|||||||
|
{
|
||||||
|
"cells": [
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"id": "50e24baa",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"from invokeai_mcp_server import create_text2img_graph, enqueue_graph, wait_for_completion, get_image_url\n",
|
||||||
|
"from urllib.parse import urljoin\n",
|
||||||
|
"\n",
|
||||||
|
"import asyncio"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"id": "0407cd9a",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"INVOKEAI_BASE_URL = \"http://127.0.0.1:9090\"\n",
|
||||||
|
"\n",
|
||||||
|
"\n",
|
||||||
|
"async def generate_image(arguments: dict):\n",
|
||||||
|
"\n",
|
||||||
|
" # Extract parameters\n",
|
||||||
|
" prompt = arguments[\"prompt\"]\n",
|
||||||
|
" negative_prompt = arguments.get(\"negative_prompt\", \"\")\n",
|
||||||
|
" width = arguments.get(\"width\", 512)\n",
|
||||||
|
" height = arguments.get(\"height\", 512)\n",
|
||||||
|
" steps = arguments.get(\"steps\", 30)\n",
|
||||||
|
" cfg_scale = arguments.get(\"cfg_scale\", 7.5)\n",
|
||||||
|
" scheduler = arguments.get(\"scheduler\", \"euler\")\n",
|
||||||
|
" seed = arguments.get(\"seed\")\n",
|
||||||
|
" model_key = arguments.get(\"model_key\")\n",
|
||||||
|
" lora_key = arguments.get(\"lora_key\")\n",
|
||||||
|
" lora_weight = arguments.get(\"lora_weight\", 1.0)\n",
|
||||||
|
" vae_key = arguments.get(\"vae_key\")\n",
|
||||||
|
"\n",
|
||||||
|
" #logger.info(f\"Generating image with prompt: {prompt[:50]}...\")\n",
|
||||||
|
"\n",
|
||||||
|
" # Create graph\n",
|
||||||
|
" graph = await create_text2img_graph(\n",
|
||||||
|
" prompt=prompt,\n",
|
||||||
|
" negative_prompt=negative_prompt,\n",
|
||||||
|
" model_key=model_key,\n",
|
||||||
|
" lora_key=lora_key,\n",
|
||||||
|
" lora_weight=lora_weight,\n",
|
||||||
|
" vae_key=vae_key,\n",
|
||||||
|
" width=width,\n",
|
||||||
|
" height=height,\n",
|
||||||
|
" steps=steps,\n",
|
||||||
|
" cfg_scale=cfg_scale,\n",
|
||||||
|
" scheduler=scheduler,\n",
|
||||||
|
" seed=seed\n",
|
||||||
|
" )\n",
|
||||||
|
"\n",
|
||||||
|
" # Enqueue and wait for completion\n",
|
||||||
|
" result = await enqueue_graph(graph)\n",
|
||||||
|
" batch_id = result[\"batch\"][\"batch_id\"]\n",
|
||||||
|
"\n",
|
||||||
|
" #logger.info(f\"Enqueued batch {batch_id}, waiting for completion...\")\n",
|
||||||
|
"\n",
|
||||||
|
" completed = await wait_for_completion(batch_id)\n",
|
||||||
|
"\n",
|
||||||
|
" # Extract image name from result\n",
|
||||||
|
" if \"result\" in completed and \"outputs\" in completed[\"result\"]:\n",
|
||||||
|
" outputs = completed[\"result\"][\"outputs\"]\n",
|
||||||
|
" # Find the image output\n",
|
||||||
|
" for node_id, output in outputs.items():\n",
|
||||||
|
" if output.get(\"type\") == \"image_output\":\n",
|
||||||
|
" image_name = output[\"image\"][\"image_name\"]\n",
|
||||||
|
" image_url = await get_image_url(image_name)\n",
|
||||||
|
"\n",
|
||||||
|
" text=f\"Image generated successfully!\\n\\nImage Name: {image_name}\\nImage URL: {image_url}\\n\\nYou can view the image at: {urljoin(INVOKEAI_BASE_URL, f'/api/v1/images/i/{image_name}/full')}\"\n",
|
||||||
|
" print(text)\n",
|
||||||
|
"\n",
|
||||||
|
" # Fallback if we couldn't find image output\n",
|
||||||
|
" #text=f\"Image generation completed but output format was unexpected. Batch ID: {batch_id}\\n\\nResult: {json.dumps(completed, indent=2)}\""
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"id": "6cf9d879",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"async def main():\n",
|
||||||
|
" args = {\n",
|
||||||
|
" \"prompt\": \"a golden katana with a fancy pommel\"\n",
|
||||||
|
" }\n",
|
||||||
|
" await generate_image(args)\n",
|
||||||
|
"\n",
|
||||||
|
"asyncio.run(main())"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"kernelspec": {
|
||||||
|
"display_name": ".venv",
|
||||||
|
"language": "python",
|
||||||
|
"name": "python3"
|
||||||
|
},
|
||||||
|
"language_info": {
|
||||||
|
"codemirror_mode": {
|
||||||
|
"name": "ipython",
|
||||||
|
"version": 3
|
||||||
|
},
|
||||||
|
"file_extension": ".py",
|
||||||
|
"mimetype": "text/x-python",
|
||||||
|
"name": "python",
|
||||||
|
"nbconvert_exporter": "python",
|
||||||
|
"pygments_lexer": "ipython3",
|
||||||
|
"version": "3.10.11"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nbformat": 4,
|
||||||
|
"nbformat_minor": 5
|
||||||
|
}
|
||||||
@@ -0,0 +1,152 @@
|
|||||||
|
{
|
||||||
|
"cells": [
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 1,
|
||||||
|
"id": "d55eb3ce",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"import requests\n",
|
||||||
|
"import base64\n",
|
||||||
|
"import time"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 5,
|
||||||
|
"id": "77b23cd8",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"# API endpoint\n",
|
||||||
|
"BASE_URL = \"http://127.0.0.1:7960\"\n",
|
||||||
|
"\n",
|
||||||
|
"def generate_no_preview(image_base64: str):\n",
|
||||||
|
" \"\"\"Generate 3D model from a single base64-encoded image without previews.\n",
|
||||||
|
" \n",
|
||||||
|
" Args:\n",
|
||||||
|
" image_base64: Base64 string of the image (without 'data:image/...' prefix)\n",
|
||||||
|
" \"\"\"\n",
|
||||||
|
" try:\n",
|
||||||
|
" # Set generation parameters\n",
|
||||||
|
" params = {\n",
|
||||||
|
" 'image_base64': image_base64,\n",
|
||||||
|
" 'seed': 42,\n",
|
||||||
|
" 'ss_guidance_strength': 7.5,\n",
|
||||||
|
" 'ss_sampling_steps': 30,\n",
|
||||||
|
" 'slat_guidance_strength': 7.5,\n",
|
||||||
|
" 'slat_sampling_steps': 30,\n",
|
||||||
|
" 'mesh_simplify_ratio': 0.95,\n",
|
||||||
|
" 'texture_size': 1024,\n",
|
||||||
|
" 'output_format': 'glb'\n",
|
||||||
|
" }\n",
|
||||||
|
" \n",
|
||||||
|
" # Start generation\n",
|
||||||
|
" print(\"Starting generation...\")\n",
|
||||||
|
" response = requests.post(f\"{BASE_URL}/generate_no_preview\", data=params)\n",
|
||||||
|
" print(\"Response status:\", response.status_code)\n",
|
||||||
|
" response.raise_for_status()\n",
|
||||||
|
" \n",
|
||||||
|
" # Poll status until complete\n",
|
||||||
|
" while True:\n",
|
||||||
|
" status = requests.get(f\"{BASE_URL}/status\").json()\n",
|
||||||
|
" print(f\"Progress: {status['progress']}%\")\n",
|
||||||
|
" \n",
|
||||||
|
" if status['status'] == 'COMPLETE':\n",
|
||||||
|
" break\n",
|
||||||
|
" elif status['status'] == 'FAILED':\n",
|
||||||
|
" raise Exception(f\"Generation failed: {status['message']}\")\n",
|
||||||
|
" \n",
|
||||||
|
" time.sleep(1)\n",
|
||||||
|
" \n",
|
||||||
|
" # Download the model\n",
|
||||||
|
" print(\"Downloading model...\")\n",
|
||||||
|
" response = requests.get(f\"{BASE_URL}/download/model\")\n",
|
||||||
|
" response.raise_for_status()\n",
|
||||||
|
" print(\"Model downloaded.\")\n",
|
||||||
|
" \n",
|
||||||
|
" return response.content\n",
|
||||||
|
" \n",
|
||||||
|
" except Exception as e:\n",
|
||||||
|
" print(f\"Error: {str(e)}\")\n",
|
||||||
|
" return None"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 6,
|
||||||
|
"id": "eb122295",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"def generate_model(image_path, output_path):\n",
|
||||||
|
" with open(image_path, 'rb') as image_file:\n",
|
||||||
|
" image_data = image_file.read()\n",
|
||||||
|
"\n",
|
||||||
|
" base64_encoded = base64.b64encode(image_data).decode('utf-8')\n",
|
||||||
|
" model = generate_no_preview(base64_encoded)\n",
|
||||||
|
" \n",
|
||||||
|
" with open(output_path, 'wb') as f:\n",
|
||||||
|
" f.write(model)\n",
|
||||||
|
" print(f\"Model saved to {output_path}\")\n"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 9,
|
||||||
|
"id": "2ce7dfdf",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"Starting generation...\n",
|
||||||
|
"Response status: 200\n",
|
||||||
|
"Progress: 100%\n",
|
||||||
|
"Downloading model...\n",
|
||||||
|
"Model downloaded.\n",
|
||||||
|
"Model saved to test_resources/style_test_3_model.glb\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"\n",
|
||||||
|
"image_path = 'test_resources/style_test_3.jpg'\n",
|
||||||
|
"output_path = \"test_resources/style_test_3_model.glb\"\n",
|
||||||
|
"\n",
|
||||||
|
"generate_model(image_path, output_path)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"id": "a1224d13",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"kernelspec": {
|
||||||
|
"display_name": ".venv",
|
||||||
|
"language": "python",
|
||||||
|
"name": "python3"
|
||||||
|
},
|
||||||
|
"language_info": {
|
||||||
|
"codemirror_mode": {
|
||||||
|
"name": "ipython",
|
||||||
|
"version": 3
|
||||||
|
},
|
||||||
|
"file_extension": ".py",
|
||||||
|
"mimetype": "text/x-python",
|
||||||
|
"name": "python",
|
||||||
|
"nbconvert_exporter": "python",
|
||||||
|
"pygments_lexer": "ipython3",
|
||||||
|
"version": "3.10.11"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nbformat": 4,
|
||||||
|
"nbformat_minor": 5
|
||||||
|
}
|
||||||
165
3d-generation-pipeline/notebooks/subprocess_test.ipynb
Normal file
165
3d-generation-pipeline/notebooks/subprocess_test.ipynb
Normal file
@@ -0,0 +1,165 @@
|
|||||||
|
{
|
||||||
|
"cells": [
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 1,
|
||||||
|
"id": "4826c91d",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"text/plain": [
|
||||||
|
"'2025-10-18-16-35-47'"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"execution_count": 1,
|
||||||
|
"metadata": {},
|
||||||
|
"output_type": "execute_result"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"from datetime import datetime\n",
|
||||||
|
"\n",
|
||||||
|
"datetime.now().strftime(\"%Y-%m-%d-%H-%M-%S\")"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 4,
|
||||||
|
"id": "9419e692",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"STDOUT:\n",
|
||||||
|
" Device used: cuda\n",
|
||||||
|
"After Remesh 9998 19996\n",
|
||||||
|
"\n",
|
||||||
|
"STDERR:\n",
|
||||||
|
" D:\\users\\henrisel\\stable-fast-3d\\.venv\\lib\\site-packages\\timm\\models\\layers\\__init__.py:48: FutureWarning: Importing from timm.models.layers is deprecated, please import via timm.layers\n",
|
||||||
|
" warnings.warn(f\"Importing from {__name__} is deprecated, please import via timm.layers\", FutureWarning)\n",
|
||||||
|
"\n",
|
||||||
|
" 0%| | 0/1 [00:00<?, ?it/s]\n",
|
||||||
|
" 0%| | 0/1 [00:00<?, ?it/s]\n",
|
||||||
|
"Traceback (most recent call last):\n",
|
||||||
|
" File \"D:\\users\\henrisel\\stable-fast-3d\\run.py\", line 122, in <module>\n",
|
||||||
|
" mesh, glob_dict = model.run_image(\n",
|
||||||
|
" File \"D:\\users\\henrisel\\stable-fast-3d\\sf3d\\system.py\", line 286, in run_image\n",
|
||||||
|
" meshes, global_dict = self.generate_mesh(\n",
|
||||||
|
" File \"D:\\users\\henrisel\\stable-fast-3d\\sf3d\\system.py\", line 369, in generate_mesh\n",
|
||||||
|
" rast = self.baker.rasterize(\n",
|
||||||
|
" File \"D:\\users\\henrisel\\stable-fast-3d\\.venv\\lib\\site-packages\\texture_baker\\baker.py\", line 28, in rasterize\n",
|
||||||
|
" return torch.ops.texture_baker_cpp.rasterize(\n",
|
||||||
|
" File \"D:\\users\\henrisel\\stable-fast-3d\\.venv\\lib\\site-packages\\torch\\_ops.py\", line 1243, in __call__\n",
|
||||||
|
" return self._op(*args, **kwargs)\n",
|
||||||
|
"NotImplementedError: Could not run 'texture_baker_cpp::rasterize' with arguments from the 'CUDA' backend. This could be because the operator doesn't exist for this backend, or was omitted during the selective/custom build process (if using custom build). If you are a Facebook employee using PyTorch on mobile, please visit https://fburl.com/ptmfixes for possible resolutions. 'texture_baker_cpp::rasterize' is only available for these backends: [CPU, Meta, BackendSelect, Python, FuncTorchDynamicLayerBackMode, Functionalize, Named, Conjugate, Negative, ZeroTensor, ADInplaceOrView, AutogradOther, AutogradCPU, AutogradCUDA, AutogradXLA, AutogradMPS, AutogradXPU, AutogradHPU, AutogradLazy, AutogradMTIA, AutogradMAIA, AutogradMeta, Tracer, AutocastCPU, AutocastMTIA, AutocastMAIA, AutocastXPU, AutocastMPS, AutocastCUDA, FuncTorchBatched, BatchedNestedTensor, FuncTorchVmapMode, Batched, VmapMode, FuncTorchGradWrapper, PythonTLSSnapshot, FuncTorchDynamicLayerFrontMode, PreDispatch, PythonDispatcher].\n",
|
||||||
|
"\n",
|
||||||
|
"CPU: registered at texture_baker\\csrc\\baker.cpp:543 [kernel]\n",
|
||||||
|
"Meta: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\core\\MetaFallbackKernel.cpp:23 [backend fallback]\n",
|
||||||
|
"BackendSelect: fallthrough registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\core\\BackendSelectFallbackKernel.cpp:3 [backend fallback]\n",
|
||||||
|
"Python: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\core\\PythonFallbackKernel.cpp:194 [backend fallback]\n",
|
||||||
|
"FuncTorchDynamicLayerBackMode: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\functorch\\DynamicLayer.cpp:479 [backend fallback]\n",
|
||||||
|
"Functionalize: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\FunctionalizeFallbackKernel.cpp:375 [backend fallback]\n",
|
||||||
|
"Named: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\core\\NamedRegistrations.cpp:7 [backend fallback]\n",
|
||||||
|
"Conjugate: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\ConjugateFallback.cpp:17 [backend fallback]\n",
|
||||||
|
"Negative: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\native\\NegateFallback.cpp:18 [backend fallback]\n",
|
||||||
|
"ZeroTensor: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\ZeroTensorFallback.cpp:86 [backend fallback]\n",
|
||||||
|
"ADInplaceOrView: fallthrough registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\core\\VariableFallbackKernel.cpp:104 [backend fallback]\n",
|
||||||
|
"AutogradOther: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\core\\VariableFallbackKernel.cpp:63 [backend fallback]\n",
|
||||||
|
"AutogradCPU: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\core\\VariableFallbackKernel.cpp:67 [backend fallback]\n",
|
||||||
|
"AutogradCUDA: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\core\\VariableFallbackKernel.cpp:75 [backend fallback]\n",
|
||||||
|
"AutogradXLA: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\core\\VariableFallbackKernel.cpp:87 [backend fallback]\n",
|
||||||
|
"AutogradMPS: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\core\\VariableFallbackKernel.cpp:95 [backend fallback]\n",
|
||||||
|
"AutogradXPU: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\core\\VariableFallbackKernel.cpp:71 [backend fallback]\n",
|
||||||
|
"AutogradHPU: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\core\\VariableFallbackKernel.cpp:108 [backend fallback]\n",
|
||||||
|
"AutogradLazy: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\core\\VariableFallbackKernel.cpp:91 [backend fallback]\n",
|
||||||
|
"AutogradMTIA: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\core\\VariableFallbackKernel.cpp:79 [backend fallback]\n",
|
||||||
|
"AutogradMAIA: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\core\\VariableFallbackKernel.cpp:83 [backend fallback]\n",
|
||||||
|
"AutogradMeta: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\core\\VariableFallbackKernel.cpp:99 [backend fallback]\n",
|
||||||
|
"Tracer: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\torch\\csrc\\autograd\\TraceTypeManual.cpp:294 [backend fallback]\n",
|
||||||
|
"AutocastCPU: fallthrough registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\autocast_mode.cpp:322 [backend fallback]\n",
|
||||||
|
"AutocastMTIA: fallthrough registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\autocast_mode.cpp:466 [backend fallback]\n",
|
||||||
|
"AutocastMAIA: fallthrough registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\autocast_mode.cpp:504 [backend fallback]\n",
|
||||||
|
"AutocastXPU: fallthrough registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\autocast_mode.cpp:542 [backend fallback]\n",
|
||||||
|
"AutocastMPS: fallthrough registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\autocast_mode.cpp:209 [backend fallback]\n",
|
||||||
|
"AutocastCUDA: fallthrough registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\autocast_mode.cpp:165 [backend fallback]\n",
|
||||||
|
"FuncTorchBatched: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\functorch\\LegacyBatchingRegistrations.cpp:731 [backend fallback]\n",
|
||||||
|
"BatchedNestedTensor: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\functorch\\LegacyBatchingRegistrations.cpp:758 [backend fallback]\n",
|
||||||
|
"FuncTorchVmapMode: fallthrough registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\functorch\\VmapModeRegistrations.cpp:27 [backend fallback]\n",
|
||||||
|
"Batched: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\LegacyBatchingRegistrations.cpp:1075 [backend fallback]\n",
|
||||||
|
"VmapMode: fallthrough registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\VmapModeRegistrations.cpp:33 [backend fallback]\n",
|
||||||
|
"FuncTorchGradWrapper: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\functorch\\TensorWrapper.cpp:210 [backend fallback]\n",
|
||||||
|
"PythonTLSSnapshot: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\core\\PythonFallbackKernel.cpp:202 [backend fallback]\n",
|
||||||
|
"FuncTorchDynamicLayerFrontMode: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\functorch\\DynamicLayer.cpp:475 [backend fallback]\n",
|
||||||
|
"PreDispatch: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\core\\PythonFallbackKernel.cpp:206 [backend fallback]\n",
|
||||||
|
"PythonDispatcher: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\core\\PythonFallbackKernel.cpp:198 [backend fallback]\n",
|
||||||
|
"\n",
|
||||||
|
"\n",
|
||||||
|
"Return Code: 1\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"import subprocess\n",
|
||||||
|
"\n",
|
||||||
|
"MODEL_FOLDER = r\"D:\\users\\henrisel\\stable-fast-3d\"\n",
|
||||||
|
"PROJECT_FOLDER = r\"D:\\users\\henrisel\\DeltaVR3DModelGeneration\\3d-generation-pipeline\"\n",
|
||||||
|
"\n",
|
||||||
|
"# Path to the Python interpreter in the other virtual environment\n",
|
||||||
|
"venv_python = MODEL_FOLDER + r\"\\.venv\\Scripts\\python.exe\"\n",
|
||||||
|
"\n",
|
||||||
|
"# Path to the .py file you want to run\n",
|
||||||
|
"script_path = MODEL_FOLDER + r\"\\run.py\"\n",
|
||||||
|
"\n",
|
||||||
|
"# Optional: arguments to pass to the script\n",
|
||||||
|
"args = [MODEL_FOLDER + r\"\\demo_files\\examples\\chair1.png\", \"--output-dir\", PROJECT_FOLDER + r\"\\images\"]\n",
|
||||||
|
"\n",
|
||||||
|
"# Build the command\n",
|
||||||
|
"command = [venv_python, script_path] + args\n",
|
||||||
|
"\n",
|
||||||
|
"try:\n",
|
||||||
|
" # Run the subprocess\n",
|
||||||
|
" result = subprocess.run(command, capture_output=True, text=True)\n",
|
||||||
|
"\n",
|
||||||
|
" # Print output and errors\n",
|
||||||
|
" print(\"STDOUT:\\n\", result.stdout)\n",
|
||||||
|
" print(\"STDERR:\\n\", result.stderr)\n",
|
||||||
|
" print(\"Return Code:\", result.returncode)\n",
|
||||||
|
"\n",
|
||||||
|
"except Exception as e:\n",
|
||||||
|
" print(f\"Error occurred: {e}\")\n"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"id": "ee480ba6",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"kernelspec": {
|
||||||
|
"display_name": ".venv",
|
||||||
|
"language": "python",
|
||||||
|
"name": "python3"
|
||||||
|
},
|
||||||
|
"language_info": {
|
||||||
|
"codemirror_mode": {
|
||||||
|
"name": "ipython",
|
||||||
|
"version": 3
|
||||||
|
},
|
||||||
|
"file_extension": ".py",
|
||||||
|
"mimetype": "text/x-python",
|
||||||
|
"name": "python",
|
||||||
|
"nbconvert_exporter": "python",
|
||||||
|
"pygments_lexer": "ipython3",
|
||||||
|
"version": "3.10.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nbformat": 4,
|
||||||
|
"nbformat_minor": 5
|
||||||
|
}
|
||||||
7
3d-generation-pipeline/requirements.txt
Normal file
7
3d-generation-pipeline/requirements.txt
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
#torch==2.8.0+cu129 https://pytorch.org/get-started/previous-versions/
|
||||||
|
transformers==4.57.0
|
||||||
|
git+https://github.com/huggingface/diffusers.git
|
||||||
|
accelerate==1.10.1
|
||||||
|
huggingface_hub[hf_xet]==1.1.10
|
||||||
|
sentencepiece==0.2.1
|
||||||
|
protobuf==6.32.1
|
||||||
62
3d-generation-pipeline/start_pipeline.py
Normal file
62
3d-generation-pipeline/start_pipeline.py
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
import argparse
|
||||||
|
import asyncio
|
||||||
|
import logging
|
||||||
|
import time
|
||||||
|
|
||||||
|
from pathlib import Path
|
||||||
|
from datetime import datetime
|
||||||
|
from dotenv import load_dotenv
|
||||||
|
|
||||||
|
from generate_image_local import text_to_image_invoke_ai
|
||||||
|
from generate_model_local import image_to_3d_api
|
||||||
|
|
||||||
|
load_dotenv()
|
||||||
|
|
||||||
|
|
||||||
|
def get_timestamp():
|
||||||
|
return datetime.now().strftime("%Y-%m-%d-%H-%M-%S")
|
||||||
|
|
||||||
|
def setup_logger(base_folder, timestamp):
|
||||||
|
log_dir = base_folder / Path("logs")
|
||||||
|
log_dir.mkdir(parents=True, exist_ok=True)
|
||||||
|
logging.basicConfig(
|
||||||
|
filename=log_dir / f"{timestamp}.log",
|
||||||
|
level=logging.INFO,
|
||||||
|
force=True
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
async def main():
|
||||||
|
parser = argparse.ArgumentParser(description="Text to 3D model pipeline")
|
||||||
|
parser.add_argument("--prompt", type=str, required=True, help="User text prompt")
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
input_prompt = args.prompt
|
||||||
|
print(f"Input prompt: {input_prompt}")
|
||||||
|
image_generation_prompt = input_prompt + ", single object, front and side fully visible, realistic style, plain neutral background, clear details, soft studio lighting, true-to-scale"
|
||||||
|
|
||||||
|
pipeline_folder = Path(__file__).resolve().parent
|
||||||
|
timestamp = get_timestamp()
|
||||||
|
setup_logger(pipeline_folder, timestamp)
|
||||||
|
time_checkpoint = time.time()
|
||||||
|
|
||||||
|
image_path = pipeline_folder / "images" / f"{timestamp}.jpg"
|
||||||
|
# TODO: use Invoke AI or Cloudflare, depending on env var
|
||||||
|
#text_to_image_cloudflare(image_generation_prompt, image_path)
|
||||||
|
await text_to_image_invoke_ai(image_generation_prompt, image_path)
|
||||||
|
|
||||||
|
image_generation_time = time.time() - time_checkpoint
|
||||||
|
time_checkpoint = time.time()
|
||||||
|
logging.info(f"Image generation time: {round(image_generation_time, 1)} s")
|
||||||
|
print(f"Generated image file: {image_path}")
|
||||||
|
|
||||||
|
model_path = pipeline_folder / "models" / timestamp
|
||||||
|
model_file = image_to_3d_api(image_path, model_path)
|
||||||
|
|
||||||
|
model_generation_time = time.time() - time_checkpoint
|
||||||
|
logging.info(f"Model generation time: {round(model_generation_time, 1)} s")
|
||||||
|
print(f"Generated 3D model file: {model_file}")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
asyncio.run(main())
|
||||||
Binary file not shown.
8
Assets/StreamingAssets/Whisper.meta
Normal file
8
Assets/StreamingAssets/Whisper.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 23fe3883e9cc804429bc54fb860d18f1
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/StreamingAssets/Whisper/ggml-base.bin
Normal file
BIN
Assets/StreamingAssets/Whisper/ggml-base.bin
Normal file
Binary file not shown.
7
Assets/StreamingAssets/Whisper/ggml-base.bin.meta
Normal file
7
Assets/StreamingAssets/Whisper/ggml-base.bin.meta
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f6c028f06eda5904eae3f7a7418b8416
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -7,7 +7,7 @@ TextureImporter:
|
|||||||
mipmaps:
|
mipmaps:
|
||||||
mipMapMode: 0
|
mipMapMode: 0
|
||||||
enableMipMap: 1
|
enableMipMap: 1
|
||||||
sRGBTexture: 1
|
sRGBTexture: 0
|
||||||
linearTexture: 0
|
linearTexture: 0
|
||||||
fadeOut: 0
|
fadeOut: 0
|
||||||
borderMipMap: 0
|
borderMipMap: 0
|
||||||
@@ -54,7 +54,7 @@ TextureImporter:
|
|||||||
alphaUsage: 1
|
alphaUsage: 1
|
||||||
alphaIsTransparency: 0
|
alphaIsTransparency: 0
|
||||||
spriteTessellationDetail: -1
|
spriteTessellationDetail: -1
|
||||||
textureType: 0
|
textureType: 1
|
||||||
textureShape: 1
|
textureShape: 1
|
||||||
singleChannelComponent: 0
|
singleChannelComponent: 0
|
||||||
flipbookRows: 1
|
flipbookRows: 1
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
|
using _PROJECT.Scripts.Bow;
|
||||||
|
using FishNet.Component.Transforming;
|
||||||
|
using FishNet.Object;
|
||||||
|
using FishNet.Object.Synchronizing;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using _PROJECT.Scripts.Bow;
|
using System.Threading.Tasks;
|
||||||
using FishNet.Object;
|
|
||||||
using FishNet.Object.Synchronizing;
|
|
||||||
using TMPro;
|
using TMPro;
|
||||||
using Unity.XR.CoreUtils;
|
using Unity.XR.CoreUtils;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
@@ -20,11 +22,14 @@ public class ArcheryRange : NetworkBehaviour
|
|||||||
public GameObject targetPrefab;
|
public GameObject targetPrefab;
|
||||||
public StartTarget startTarget;
|
public StartTarget startTarget;
|
||||||
|
|
||||||
|
public GameObject archeryTargetPointsText;
|
||||||
|
|
||||||
public Vector3 minRandomOffset = new Vector3(0f, -2f, -5f);
|
public Vector3 minRandomOffset = new Vector3(0f, -2f, -5f);
|
||||||
public Vector3 maxRandomOffset = new Vector3(0f, 2f, 5f);
|
public Vector3 maxRandomOffset = new Vector3(0f, 2f, 5f);
|
||||||
public float roundLength = 60f;
|
public float roundLength = 60f;
|
||||||
public float targetSpawnTime = 3f;
|
public float targetSpawnTime = 3f;
|
||||||
|
|
||||||
|
public ModelGenerationBox modelGenerationBox;
|
||||||
public KeyboardManager keyboardManager;
|
public KeyboardManager keyboardManager;
|
||||||
|
|
||||||
private List<ArcheryTarget> _targets;
|
private List<ArcheryTarget> _targets;
|
||||||
@@ -112,30 +117,56 @@ public class ArcheryRange : NetworkBehaviour
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SpawnTarget()
|
async private void SpawnTarget()
|
||||||
{
|
{
|
||||||
if (!IsServer) return;
|
if (!IsServer) return;
|
||||||
|
|
||||||
var randomPos = targetStartPosition.position + new Vector3(
|
var randomPos = targetStartPosition.position + new Vector3(
|
||||||
Random.Range(minRandomOffset.x, maxRandomOffset.x),
|
Random.Range(minRandomOffset.x, maxRandomOffset.x),
|
||||||
(float) Math.Round(Random.Range(minRandomOffset.y, maxRandomOffset.y)),
|
(float) Math.Round(Random.Range(minRandomOffset.y, maxRandomOffset.y)),
|
||||||
Random.Range(minRandomOffset.z, maxRandomOffset.z));
|
Random.Range(minRandomOffset.z, maxRandomOffset.z)
|
||||||
|
);
|
||||||
var target = SpawnTarget(randomPos);
|
|
||||||
|
|
||||||
|
var target = await SpawnTarget(randomPos);
|
||||||
_targets.Add(target);
|
_targets.Add(target);
|
||||||
}
|
}
|
||||||
|
|
||||||
private ArcheryTarget SpawnTarget(Vector3 randomPos)
|
async private Task<ArcheryTarget> SpawnTarget(Vector3 randomPos)
|
||||||
{
|
{
|
||||||
var prefab = Instantiate(targetPrefab, randomPos, Quaternion.identity, null);
|
GameObject targetObject;
|
||||||
ArcheryTarget target = prefab.GetComponent<ArcheryTarget>();
|
if (modelGenerationBox.LastModelPath == null)
|
||||||
|
{
|
||||||
|
// spawn default UFO
|
||||||
|
targetObject = Instantiate(targetPrefab, randomPos, Quaternion.identity, null);
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
// spawn generated model
|
||||||
|
targetObject = await PipelineManager.Instance.SpawnModel(modelGenerationBox.LastModelPath);
|
||||||
|
targetObject.transform.position = randomPos;
|
||||||
|
targetObject.transform.rotation = Quaternion.identity;
|
||||||
|
InitializeArcherytargetObject(targetObject);
|
||||||
|
}
|
||||||
|
|
||||||
|
ArcheryTarget target = targetObject.GetComponent<ArcheryTarget>();
|
||||||
target.endPosition = targetEndPosition.position;
|
target.endPosition = targetEndPosition.position;
|
||||||
target.addScore = AddScore;
|
target.addScore = AddScore;
|
||||||
Spawn(prefab);
|
Spawn(targetObject);
|
||||||
return target;
|
return target;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void InitializeArcherytargetObject(GameObject targetObject)
|
||||||
|
{
|
||||||
|
ArcheryTarget archeryTarget = targetObject.AddComponent<ArcheryTarget>();
|
||||||
|
archeryTarget.pointsText = archeryTargetPointsText;
|
||||||
|
|
||||||
|
Rigidbody rigidbody = targetObject.AddComponent<Rigidbody>();
|
||||||
|
rigidbody.useGravity = false;
|
||||||
|
rigidbody.isKinematic = true;
|
||||||
|
|
||||||
|
targetObject.AddComponent<NetworkObject>();
|
||||||
|
targetObject.AddComponent<NetworkTransform>();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public void ResetRange()
|
public void ResetRange()
|
||||||
{
|
{
|
||||||
@@ -178,6 +209,7 @@ public class ArcheryRange : NetworkBehaviour
|
|||||||
public void StartRound()
|
public void StartRound()
|
||||||
{
|
{
|
||||||
if (!IsServer) return;
|
if (!IsServer) return;
|
||||||
|
|
||||||
_roundEndTime = Time.time + roundLength;
|
_roundEndTime = Time.time + roundLength;
|
||||||
_nextTargetTime = Time.time;
|
_nextTargetTime = Time.time;
|
||||||
_roundActive = true;
|
_roundActive = true;
|
||||||
|
|||||||
@@ -1,10 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using _PROJECT.Scripts.Bow;
|
|
||||||
using _PROJECT.Scripts.Bow.Extra;
|
|
||||||
using FishNet.Object;
|
using FishNet.Object;
|
||||||
using FishNet.Object.Synchronizing;
|
using FishNet.Object.Synchronizing;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using Random = UnityEngine.Random;
|
|
||||||
|
|
||||||
public class ArcheryTarget : NetworkBehaviour, IArrowHittable
|
public class ArcheryTarget : NetworkBehaviour, IArrowHittable
|
||||||
{
|
{
|
||||||
@@ -14,11 +11,9 @@ public class ArcheryTarget : NetworkBehaviour, IArrowHittable
|
|||||||
public float forwardSpeed = 2f;
|
public float forwardSpeed = 2f;
|
||||||
public Action<float> addScore;
|
public Action<float> addScore;
|
||||||
|
|
||||||
private bool _flipDirection;
|
|
||||||
|
|
||||||
private void Awake()
|
private void Awake()
|
||||||
{
|
{
|
||||||
_flipDirection = Random.value > 0.5f;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update is called once per frame
|
// Update is called once per frame
|
||||||
@@ -28,11 +23,12 @@ public class ArcheryTarget : NetworkBehaviour, IArrowHittable
|
|||||||
float step = forwardSpeed * Time.deltaTime;
|
float step = forwardSpeed * Time.deltaTime;
|
||||||
var position = transform.position;
|
var position = transform.position;
|
||||||
|
|
||||||
if (Math.Abs(position.x - endPosition.x) < 0.1) Destroy(gameObject);
|
if (Math.Abs(position.x - endPosition.x) < 0.1)
|
||||||
|
{
|
||||||
|
Destroy(gameObject);
|
||||||
|
}
|
||||||
|
|
||||||
|
transform.position = Vector3.MoveTowards(position, new Vector3(endPosition.x, position.y, position.z), step);
|
||||||
transform.position = Vector3.MoveTowards(position,
|
|
||||||
new Vector3(endPosition.x, position.y, position.z), step);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Hit(Arrow arrow)
|
public void Hit(Arrow arrow)
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ public class ContinuoslocomotionConfigurator : MonoBehaviour
|
|||||||
turnOnButton.onClick.AddListener(enableLocomotion);
|
turnOnButton.onClick.AddListener(enableLocomotion);
|
||||||
turnOffButton.onClick.AddListener(disableLocomotion);
|
turnOffButton.onClick.AddListener(disableLocomotion);
|
||||||
turnOffButton.gameObject.SetActive(false); // off by default
|
turnOffButton.gameObject.SetActive(false); // off by default
|
||||||
|
enableLocomotion();
|
||||||
}
|
}
|
||||||
public void UpdateSpeed(float speed)
|
public void UpdateSpeed(float speed)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -4262,7 +4262,7 @@ GameObject:
|
|||||||
m_Icon: {fileID: 0}
|
m_Icon: {fileID: 0}
|
||||||
m_NavMeshLayer: 0
|
m_NavMeshLayer: 0
|
||||||
m_StaticEditorFlags: 0
|
m_StaticEditorFlags: 0
|
||||||
m_IsActive: 0
|
m_IsActive: 1
|
||||||
--- !u!224 &9206012036671205809
|
--- !u!224 &9206012036671205809
|
||||||
RectTransform:
|
RectTransform:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -5926,7 +5926,7 @@ GameObject:
|
|||||||
m_Icon: {fileID: 0}
|
m_Icon: {fileID: 0}
|
||||||
m_NavMeshLayer: 0
|
m_NavMeshLayer: 0
|
||||||
m_StaticEditorFlags: 0
|
m_StaticEditorFlags: 0
|
||||||
m_IsActive: 1
|
m_IsActive: 0
|
||||||
--- !u!224 &8444771935628625875
|
--- !u!224 &8444771935628625875
|
||||||
RectTransform:
|
RectTransform:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|||||||
@@ -47,32 +47,42 @@ PrefabInstance:
|
|||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: _networkBehaviours.Array.data[0]
|
propertyPath: _networkBehaviours.Array.data[0]
|
||||||
value:
|
value:
|
||||||
objectReference: {fileID: 5202846571429040564}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 1047001759896168042, guid: ffcd2a74c5d65454eb9a9df7cdee282d,
|
- target: {fileID: 1047001759896168042, guid: ffcd2a74c5d65454eb9a9df7cdee282d,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: _networkBehaviours.Array.data[1]
|
propertyPath: _networkBehaviours.Array.data[1]
|
||||||
value:
|
value:
|
||||||
objectReference: {fileID: 1679634901522453674}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 1047001759896168042, guid: ffcd2a74c5d65454eb9a9df7cdee282d,
|
- target: {fileID: 1047001759896168042, guid: ffcd2a74c5d65454eb9a9df7cdee282d,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: _networkBehaviours.Array.data[2]
|
propertyPath: _networkBehaviours.Array.data[2]
|
||||||
value:
|
value:
|
||||||
objectReference: {fileID: 6661770736086048195}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 1047001759896168042, guid: ffcd2a74c5d65454eb9a9df7cdee282d,
|
- target: {fileID: 1047001759896168042, guid: ffcd2a74c5d65454eb9a9df7cdee282d,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: _networkBehaviours.Array.data[3]
|
propertyPath: _networkBehaviours.Array.data[3]
|
||||||
value:
|
value:
|
||||||
objectReference: {fileID: 2131991500650195796}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 1047001759896168042, guid: ffcd2a74c5d65454eb9a9df7cdee282d,
|
- target: {fileID: 1047001759896168042, guid: ffcd2a74c5d65454eb9a9df7cdee282d,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: _networkBehaviours.Array.data[4]
|
propertyPath: _networkBehaviours.Array.data[4]
|
||||||
value:
|
value:
|
||||||
objectReference: {fileID: 427371208704957824}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 1047001759896168042, guid: ffcd2a74c5d65454eb9a9df7cdee282d,
|
- target: {fileID: 1047001759896168042, guid: ffcd2a74c5d65454eb9a9df7cdee282d,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: _sceneNetworkObjects.Array.data[0]
|
propertyPath: _sceneNetworkObjects.Array.data[0]
|
||||||
value:
|
value:
|
||||||
objectReference: {fileID: 9003568064594053937}
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 2689384198849609103, guid: ffcd2a74c5d65454eb9a9df7cdee282d,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: <PrefabId>k__BackingField
|
||||||
|
value: 3
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 2689384198849609103, guid: ffcd2a74c5d65454eb9a9df7cdee282d,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: <AssetPathHash>k__BackingField
|
||||||
|
value: 11307787013377802985
|
||||||
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 3316891016740450456, guid: ffcd2a74c5d65454eb9a9df7cdee282d,
|
- target: {fileID: 3316891016740450456, guid: ffcd2a74c5d65454eb9a9df7cdee282d,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: _componentIndexCache
|
propertyPath: _componentIndexCache
|
||||||
@@ -88,6 +98,11 @@ PrefabInstance:
|
|||||||
propertyPath: _componentIndexCache
|
propertyPath: _componentIndexCache
|
||||||
value: 1
|
value: 1
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 7983999977322064054, guid: ffcd2a74c5d65454eb9a9df7cdee282d,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: m_Name
|
||||||
|
value: TargetUFO Variant
|
||||||
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 8062271296867124751, guid: ffcd2a74c5d65454eb9a9df7cdee282d,
|
- target: {fileID: 8062271296867124751, guid: ffcd2a74c5d65454eb9a9df7cdee282d,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: _componentIndexCache
|
propertyPath: _componentIndexCache
|
||||||
@@ -157,108 +172,5 @@ PrefabInstance:
|
|||||||
- {fileID: 3572526038880022669, guid: ffcd2a74c5d65454eb9a9df7cdee282d, type: 3}
|
- {fileID: 3572526038880022669, guid: ffcd2a74c5d65454eb9a9df7cdee282d, type: 3}
|
||||||
m_RemovedGameObjects: []
|
m_RemovedGameObjects: []
|
||||||
m_AddedGameObjects: []
|
m_AddedGameObjects: []
|
||||||
m_AddedComponents:
|
m_AddedComponents: []
|
||||||
- targetCorrespondingSourceObject: {fileID: 93219228833127587, guid: ffcd2a74c5d65454eb9a9df7cdee282d,
|
|
||||||
type: 3}
|
|
||||||
insertIndex: -1
|
|
||||||
addedObject: {fileID: 8322216027534318572}
|
|
||||||
m_SourcePrefab: {fileID: 100100000, guid: ffcd2a74c5d65454eb9a9df7cdee282d, type: 3}
|
m_SourcePrefab: {fileID: 100100000, guid: ffcd2a74c5d65454eb9a9df7cdee282d, type: 3}
|
||||||
--- !u!114 &427371208704957824 stripped
|
|
||||||
MonoBehaviour:
|
|
||||||
m_CorrespondingSourceObject: {fileID: 8618473685913268443, guid: ffcd2a74c5d65454eb9a9df7cdee282d,
|
|
||||||
type: 3}
|
|
||||||
m_PrefabInstance: {fileID: 8247405925049036123}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 0}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: a2836e36774ca1c4bbbee976e17b649c, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
--- !u!114 &1679634901522453674 stripped
|
|
||||||
MonoBehaviour:
|
|
||||||
m_CorrespondingSourceObject: {fileID: 7294680161384397297, guid: ffcd2a74c5d65454eb9a9df7cdee282d,
|
|
||||||
type: 3}
|
|
||||||
m_PrefabInstance: {fileID: 8247405925049036123}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 0}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: a2836e36774ca1c4bbbee976e17b649c, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
--- !u!114 &2131991500650195796 stripped
|
|
||||||
MonoBehaviour:
|
|
||||||
m_CorrespondingSourceObject: {fileID: 8062271296867124751, guid: ffcd2a74c5d65454eb9a9df7cdee282d,
|
|
||||||
type: 3}
|
|
||||||
m_PrefabInstance: {fileID: 8247405925049036123}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 0}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: a2836e36774ca1c4bbbee976e17b649c, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
--- !u!114 &5202846571429040564 stripped
|
|
||||||
MonoBehaviour:
|
|
||||||
m_CorrespondingSourceObject: {fileID: 4197516043068701935, guid: ffcd2a74c5d65454eb9a9df7cdee282d,
|
|
||||||
type: 3}
|
|
||||||
m_PrefabInstance: {fileID: 8247405925049036123}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 8304503138865017336}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: a2836e36774ca1c4bbbee976e17b649c, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
--- !u!114 &6661770736086048195 stripped
|
|
||||||
MonoBehaviour:
|
|
||||||
m_CorrespondingSourceObject: {fileID: 3316891016740450456, guid: ffcd2a74c5d65454eb9a9df7cdee282d,
|
|
||||||
type: 3}
|
|
||||||
m_PrefabInstance: {fileID: 8247405925049036123}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 0}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: a2836e36774ca1c4bbbee976e17b649c, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
--- !u!1 &8304503138865017336 stripped
|
|
||||||
GameObject:
|
|
||||||
m_CorrespondingSourceObject: {fileID: 93219228833127587, guid: ffcd2a74c5d65454eb9a9df7cdee282d,
|
|
||||||
type: 3}
|
|
||||||
m_PrefabInstance: {fileID: 8247405925049036123}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
--- !u!95 &8322216027534318572
|
|
||||||
Animator:
|
|
||||||
serializedVersion: 5
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 8304503138865017336}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_Avatar: {fileID: 0}
|
|
||||||
m_Controller: {fileID: 9100000, guid: 36e85fed2c7547d4f8c33da43172c8e7, type: 2}
|
|
||||||
m_CullingMode: 0
|
|
||||||
m_UpdateMode: 0
|
|
||||||
m_ApplyRootMotion: 0
|
|
||||||
m_LinearVelocityBlending: 0
|
|
||||||
m_StabilizeFeet: 0
|
|
||||||
m_WarningMessage:
|
|
||||||
m_HasTransformHierarchy: 1
|
|
||||||
m_AllowConstantClipSamplingOptimization: 1
|
|
||||||
m_KeepAnimatorStateOnDisable: 0
|
|
||||||
m_WriteDefaultValuesOnDisable: 0
|
|
||||||
--- !u!114 &9003568064594053937 stripped
|
|
||||||
MonoBehaviour:
|
|
||||||
m_CorrespondingSourceObject: {fileID: 1047001759896168042, guid: ffcd2a74c5d65454eb9a9df7cdee282d,
|
|
||||||
type: 3}
|
|
||||||
m_PrefabInstance: {fileID: 8247405925049036123}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 8304503138865017336}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: 26b716c41e9b56b4baafaf13a523ba2e, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
|
|||||||
133
Assets/_PROJECT/Materials/Green.mat
Normal file
133
Assets/_PROJECT/Materials/Green.mat
Normal file
@@ -0,0 +1,133 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!21 &2100000
|
||||||
|
Material:
|
||||||
|
serializedVersion: 8
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: Green
|
||||||
|
m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3}
|
||||||
|
m_Parent: {fileID: 0}
|
||||||
|
m_ModifiedSerializedProperties: 0
|
||||||
|
m_ValidKeywords: []
|
||||||
|
m_InvalidKeywords: []
|
||||||
|
m_LightmapFlags: 4
|
||||||
|
m_EnableInstancingVariants: 0
|
||||||
|
m_DoubleSidedGI: 0
|
||||||
|
m_CustomRenderQueue: -1
|
||||||
|
stringTagMap:
|
||||||
|
RenderType: Opaque
|
||||||
|
disabledShaderPasses: []
|
||||||
|
m_LockedProperties:
|
||||||
|
m_SavedProperties:
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TexEnvs:
|
||||||
|
- _BaseMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _BumpMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _DetailAlbedoMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _DetailMask:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _DetailNormalMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _EmissionMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _MainTex:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _MetallicGlossMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _OcclusionMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _ParallaxMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _SpecGlossMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- unity_Lightmaps:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- unity_LightmapsInd:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- unity_ShadowMasks:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
m_Ints: []
|
||||||
|
m_Floats:
|
||||||
|
- _AlphaClip: 0
|
||||||
|
- _AlphaToMask: 0
|
||||||
|
- _Blend: 0
|
||||||
|
- _BlendModePreserveSpecular: 1
|
||||||
|
- _BumpScale: 1
|
||||||
|
- _ClearCoatMask: 0
|
||||||
|
- _ClearCoatSmoothness: 0
|
||||||
|
- _Cull: 2
|
||||||
|
- _Cutoff: 0.5
|
||||||
|
- _DetailAlbedoMapScale: 1
|
||||||
|
- _DetailNormalMapScale: 1
|
||||||
|
- _DstBlend: 0
|
||||||
|
- _DstBlendAlpha: 0
|
||||||
|
- _EnvironmentReflections: 1
|
||||||
|
- _GlossMapScale: 0
|
||||||
|
- _Glossiness: 0
|
||||||
|
- _GlossyReflections: 0
|
||||||
|
- _Metallic: 0
|
||||||
|
- _OcclusionStrength: 1
|
||||||
|
- _Parallax: 0.005
|
||||||
|
- _QueueOffset: 0
|
||||||
|
- _ReceiveShadows: 1
|
||||||
|
- _Smoothness: 0.5
|
||||||
|
- _SmoothnessTextureChannel: 0
|
||||||
|
- _SpecularHighlights: 1
|
||||||
|
- _SrcBlend: 1
|
||||||
|
- _SrcBlendAlpha: 1
|
||||||
|
- _Surface: 0
|
||||||
|
- _WorkflowMode: 1
|
||||||
|
- _ZWrite: 1
|
||||||
|
m_Colors:
|
||||||
|
- _BaseColor: {r: 0, g: 1, b: 0.0381248, a: 1}
|
||||||
|
- _Color: {r: 0, g: 1, b: 0.0381248, a: 1}
|
||||||
|
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||||
|
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
|
||||||
|
m_BuildTextureStacks: []
|
||||||
|
--- !u!114 &6221994712197478572
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 11
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
version: 7
|
||||||
8
Assets/_PROJECT/Materials/Green.mat.meta
Normal file
8
Assets/_PROJECT/Materials/Green.mat.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 937c5f357ed270843bd43d1f7d5d475b
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 2100000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
133
Assets/_PROJECT/Materials/Red.mat
Normal file
133
Assets/_PROJECT/Materials/Red.mat
Normal file
@@ -0,0 +1,133 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &-7093071968994914494
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 11
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
version: 7
|
||||||
|
--- !u!21 &2100000
|
||||||
|
Material:
|
||||||
|
serializedVersion: 8
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: Red
|
||||||
|
m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3}
|
||||||
|
m_Parent: {fileID: 0}
|
||||||
|
m_ModifiedSerializedProperties: 0
|
||||||
|
m_ValidKeywords: []
|
||||||
|
m_InvalidKeywords: []
|
||||||
|
m_LightmapFlags: 4
|
||||||
|
m_EnableInstancingVariants: 0
|
||||||
|
m_DoubleSidedGI: 0
|
||||||
|
m_CustomRenderQueue: -1
|
||||||
|
stringTagMap:
|
||||||
|
RenderType: Opaque
|
||||||
|
disabledShaderPasses: []
|
||||||
|
m_LockedProperties:
|
||||||
|
m_SavedProperties:
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TexEnvs:
|
||||||
|
- _BaseMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _BumpMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _DetailAlbedoMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _DetailMask:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _DetailNormalMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _EmissionMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _MainTex:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _MetallicGlossMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _OcclusionMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _ParallaxMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _SpecGlossMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- unity_Lightmaps:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- unity_LightmapsInd:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- unity_ShadowMasks:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
m_Ints: []
|
||||||
|
m_Floats:
|
||||||
|
- _AlphaClip: 0
|
||||||
|
- _AlphaToMask: 0
|
||||||
|
- _Blend: 0
|
||||||
|
- _BlendModePreserveSpecular: 1
|
||||||
|
- _BumpScale: 1
|
||||||
|
- _ClearCoatMask: 0
|
||||||
|
- _ClearCoatSmoothness: 0
|
||||||
|
- _Cull: 2
|
||||||
|
- _Cutoff: 0.5
|
||||||
|
- _DetailAlbedoMapScale: 1
|
||||||
|
- _DetailNormalMapScale: 1
|
||||||
|
- _DstBlend: 0
|
||||||
|
- _DstBlendAlpha: 0
|
||||||
|
- _EnvironmentReflections: 1
|
||||||
|
- _GlossMapScale: 0
|
||||||
|
- _Glossiness: 0
|
||||||
|
- _GlossyReflections: 0
|
||||||
|
- _Metallic: 0
|
||||||
|
- _OcclusionStrength: 1
|
||||||
|
- _Parallax: 0.005
|
||||||
|
- _QueueOffset: 0
|
||||||
|
- _ReceiveShadows: 1
|
||||||
|
- _Smoothness: 0.5
|
||||||
|
- _SmoothnessTextureChannel: 0
|
||||||
|
- _SpecularHighlights: 1
|
||||||
|
- _SrcBlend: 1
|
||||||
|
- _SrcBlendAlpha: 1
|
||||||
|
- _Surface: 0
|
||||||
|
- _WorkflowMode: 1
|
||||||
|
- _ZWrite: 1
|
||||||
|
m_Colors:
|
||||||
|
- _BaseColor: {r: 1, g: 0, b: 0, a: 1}
|
||||||
|
- _Color: {r: 1, g: 0, b: 0, a: 1}
|
||||||
|
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||||
|
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
|
||||||
|
m_BuildTextureStacks: []
|
||||||
8
Assets/_PROJECT/Materials/Red.mat.meta
Normal file
8
Assets/_PROJECT/Materials/Red.mat.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 707a698b0ec80454a8c68700bca72941
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 2100000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
133
Assets/_PROJECT/Materials/Yellow.mat
Normal file
133
Assets/_PROJECT/Materials/Yellow.mat
Normal file
@@ -0,0 +1,133 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!21 &2100000
|
||||||
|
Material:
|
||||||
|
serializedVersion: 8
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: Yellow
|
||||||
|
m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3}
|
||||||
|
m_Parent: {fileID: 0}
|
||||||
|
m_ModifiedSerializedProperties: 0
|
||||||
|
m_ValidKeywords: []
|
||||||
|
m_InvalidKeywords: []
|
||||||
|
m_LightmapFlags: 4
|
||||||
|
m_EnableInstancingVariants: 0
|
||||||
|
m_DoubleSidedGI: 0
|
||||||
|
m_CustomRenderQueue: -1
|
||||||
|
stringTagMap:
|
||||||
|
RenderType: Opaque
|
||||||
|
disabledShaderPasses: []
|
||||||
|
m_LockedProperties:
|
||||||
|
m_SavedProperties:
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TexEnvs:
|
||||||
|
- _BaseMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _BumpMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _DetailAlbedoMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _DetailMask:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _DetailNormalMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _EmissionMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _MainTex:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _MetallicGlossMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _OcclusionMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _ParallaxMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _SpecGlossMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- unity_Lightmaps:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- unity_LightmapsInd:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- unity_ShadowMasks:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
m_Ints: []
|
||||||
|
m_Floats:
|
||||||
|
- _AlphaClip: 0
|
||||||
|
- _AlphaToMask: 0
|
||||||
|
- _Blend: 0
|
||||||
|
- _BlendModePreserveSpecular: 1
|
||||||
|
- _BumpScale: 1
|
||||||
|
- _ClearCoatMask: 0
|
||||||
|
- _ClearCoatSmoothness: 0
|
||||||
|
- _Cull: 2
|
||||||
|
- _Cutoff: 0.5
|
||||||
|
- _DetailAlbedoMapScale: 1
|
||||||
|
- _DetailNormalMapScale: 1
|
||||||
|
- _DstBlend: 0
|
||||||
|
- _DstBlendAlpha: 0
|
||||||
|
- _EnvironmentReflections: 1
|
||||||
|
- _GlossMapScale: 0
|
||||||
|
- _Glossiness: 0
|
||||||
|
- _GlossyReflections: 0
|
||||||
|
- _Metallic: 0
|
||||||
|
- _OcclusionStrength: 1
|
||||||
|
- _Parallax: 0.005
|
||||||
|
- _QueueOffset: 0
|
||||||
|
- _ReceiveShadows: 1
|
||||||
|
- _Smoothness: 0.5
|
||||||
|
- _SmoothnessTextureChannel: 0
|
||||||
|
- _SpecularHighlights: 1
|
||||||
|
- _SrcBlend: 1
|
||||||
|
- _SrcBlendAlpha: 1
|
||||||
|
- _Surface: 0
|
||||||
|
- _WorkflowMode: 1
|
||||||
|
- _ZWrite: 1
|
||||||
|
m_Colors:
|
||||||
|
- _BaseColor: {r: 1, g: 0.70276463, b: 0, a: 1}
|
||||||
|
- _Color: {r: 1, g: 0.70276463, b: 0, a: 1}
|
||||||
|
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||||
|
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
|
||||||
|
m_BuildTextureStacks: []
|
||||||
|
--- !u!114 &6221994712197478572
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 11
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
version: 7
|
||||||
8
Assets/_PROJECT/Materials/Yellow.mat.meta
Normal file
8
Assets/_PROJECT/Materials/Yellow.mat.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 33390c6f2eb32df47809c60975868a0c
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 2100000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/_PROJECT/Prefabs/ModelGeneration.meta
Normal file
8
Assets/_PROJECT/Prefabs/ModelGeneration.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 385d2126f75fee943a7071a35bcdec82
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,156 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1 &8617702063501079407
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1000498446801613149}
|
||||||
|
- component: {fileID: 2692232214199165587}
|
||||||
|
- component: {fileID: 3054822165453666587}
|
||||||
|
- component: {fileID: 6212693736535064192}
|
||||||
|
- component: {fileID: 104473305465913916}
|
||||||
|
- component: {fileID: 998178908997684460}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: ModelGenerationTestBox
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &1000498446801613149
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 8617702063501079407}
|
||||||
|
m_LocalRotation: {x: -0, y: 1, z: -0, w: -0.00000035762784}
|
||||||
|
m_LocalPosition: {x: -77.521, y: 5.092, z: -13.493}
|
||||||
|
m_LocalScale: {x: 0.75, y: 0.75, z: 0.75}
|
||||||
|
m_ConstrainProportionsScale: 1
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_RootOrder: 34
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0}
|
||||||
|
--- !u!33 &2692232214199165587
|
||||||
|
MeshFilter:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 8617702063501079407}
|
||||||
|
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
--- !u!23 &3054822165453666587
|
||||||
|
MeshRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 8617702063501079407}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_CastShadows: 1
|
||||||
|
m_ReceiveShadows: 1
|
||||||
|
m_DynamicOccludee: 1
|
||||||
|
m_StaticShadowCaster: 0
|
||||||
|
m_MotionVectors: 1
|
||||||
|
m_LightProbeUsage: 1
|
||||||
|
m_ReflectionProbeUsage: 1
|
||||||
|
m_RayTracingMode: 2
|
||||||
|
m_RayTraceProcedural: 0
|
||||||
|
m_RenderingLayerMask: 1
|
||||||
|
m_RendererPriority: 0
|
||||||
|
m_Materials:
|
||||||
|
- {fileID: 2100000, guid: 707a698b0ec80454a8c68700bca72941, type: 2}
|
||||||
|
m_StaticBatchInfo:
|
||||||
|
firstSubMesh: 0
|
||||||
|
subMeshCount: 0
|
||||||
|
m_StaticBatchRoot: {fileID: 0}
|
||||||
|
m_ProbeAnchor: {fileID: 0}
|
||||||
|
m_LightProbeVolumeOverride: {fileID: 0}
|
||||||
|
m_ScaleInLightmap: 1
|
||||||
|
m_ReceiveGI: 1
|
||||||
|
m_PreserveUVs: 0
|
||||||
|
m_IgnoreNormalsForChartDetection: 0
|
||||||
|
m_ImportantGI: 0
|
||||||
|
m_StitchLightmapSeams: 1
|
||||||
|
m_SelectedEditorRenderState: 3
|
||||||
|
m_MinimumChartSize: 4
|
||||||
|
m_AutoUVMaxDistance: 0.5
|
||||||
|
m_AutoUVMaxAngle: 89
|
||||||
|
m_LightmapParameters: {fileID: 0}
|
||||||
|
m_SortingLayerID: 0
|
||||||
|
m_SortingLayer: 0
|
||||||
|
m_SortingOrder: 0
|
||||||
|
m_AdditionalVertexStreams: {fileID: 0}
|
||||||
|
--- !u!65 &6212693736535064192
|
||||||
|
BoxCollider:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 8617702063501079407}
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_IncludeLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 0
|
||||||
|
m_ExcludeLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 0
|
||||||
|
m_LayerOverridePriority: 0
|
||||||
|
m_IsTrigger: 1
|
||||||
|
m_ProvidesContacts: 0
|
||||||
|
m_Enabled: 1
|
||||||
|
serializedVersion: 3
|
||||||
|
m_Size: {x: 1, y: 1, z: 1}
|
||||||
|
m_Center: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &104473305465913916
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 8617702063501079407}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 46e67223dce9b7a4783ed36b8ed65f19, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
inactiveMaterial: {fileID: 2100000, guid: 707a698b0ec80454a8c68700bca72941, type: 2}
|
||||||
|
loadingMaterial: {fileID: 2100000, guid: 33390c6f2eb32df47809c60975868a0c, type: 2}
|
||||||
|
modelSpawnPoint: {fileID: 0}
|
||||||
|
voiceTranscriptionTestBox: {fileID: 0}
|
||||||
|
--- !u!114 &998178908997684460
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 8617702063501079407}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: b781fe673a5534e91b1e802df4b9362e, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
importSettings:
|
||||||
|
nodeNameMethod: 0
|
||||||
|
animationMethod: 1
|
||||||
|
generateMipMaps: 0
|
||||||
|
texturesReadable: 0
|
||||||
|
defaultMinFilterMode: 9729
|
||||||
|
defaultMagFilterMode: 9729
|
||||||
|
anisotropicFilterLevel: 1
|
||||||
|
url:
|
||||||
|
loadOnStartup: 1
|
||||||
|
sceneId: -1
|
||||||
|
playAutomatically: 1
|
||||||
|
streamingAsset: 0
|
||||||
|
instantiationSettings:
|
||||||
|
mask: -1
|
||||||
|
layer: 0
|
||||||
|
skinUpdateWhenOffscreen: 1
|
||||||
|
lightIntensityFactor: 1
|
||||||
|
sceneObjectCreation: 2
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 3c049d2c1ae5f3442805c07fd16458a3
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,475 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1 &669736891457552810
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 4986844661789441171}
|
||||||
|
- component: {fileID: 6879637936960607693}
|
||||||
|
- component: {fileID: 4986639446023588421}
|
||||||
|
- component: {fileID: 2985025283767969105}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Canvas
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &4986844661789441171
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 669736891457552810}
|
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0.857}
|
||||||
|
m_LocalScale: {x: 0.01, y: 0.01, z: 0.01}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children:
|
||||||
|
- {fileID: 1316560435299418524}
|
||||||
|
m_Father: {fileID: 4044330358026692072}
|
||||||
|
m_RootOrder: -1
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 0, y: 0}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 1.204}
|
||||||
|
m_SizeDelta: {x: 400, y: 100}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!223 &6879637936960607693
|
||||||
|
Canvas:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 669736891457552810}
|
||||||
|
m_Enabled: 1
|
||||||
|
serializedVersion: 3
|
||||||
|
m_RenderMode: 2
|
||||||
|
m_Camera: {fileID: 0}
|
||||||
|
m_PlaneDistance: 100
|
||||||
|
m_PixelPerfect: 0
|
||||||
|
m_ReceivesEvents: 1
|
||||||
|
m_OverrideSorting: 0
|
||||||
|
m_OverridePixelPerfect: 0
|
||||||
|
m_SortingBucketNormalizedSize: 0
|
||||||
|
m_AdditionalShaderChannelsFlag: 25
|
||||||
|
m_UpdateRectTransformForStandalone: 0
|
||||||
|
m_SortingLayerID: 0
|
||||||
|
m_SortingOrder: 0
|
||||||
|
m_TargetDisplay: 0
|
||||||
|
--- !u!114 &4986639446023588421
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 669736891457552810}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_UiScaleMode: 0
|
||||||
|
m_ReferencePixelsPerUnit: 100
|
||||||
|
m_ScaleFactor: 1
|
||||||
|
m_ReferenceResolution: {x: 800, y: 600}
|
||||||
|
m_ScreenMatchMode: 0
|
||||||
|
m_MatchWidthOrHeight: 0
|
||||||
|
m_PhysicalUnit: 3
|
||||||
|
m_FallbackScreenDPI: 96
|
||||||
|
m_DefaultSpriteDPI: 96
|
||||||
|
m_DynamicPixelsPerUnit: 1
|
||||||
|
m_PresetInfoIsWorld: 1
|
||||||
|
--- !u!114 &2985025283767969105
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 669736891457552810}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_IgnoreReversedGraphics: 1
|
||||||
|
m_BlockingObjects: 0
|
||||||
|
m_BlockingMask:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
--- !u!1 &4272551361409990479
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1316560435299418524}
|
||||||
|
- component: {fileID: 1778346978591138474}
|
||||||
|
- component: {fileID: 6421992870879591294}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Panel
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &1316560435299418524
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 4272551361409990479}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children:
|
||||||
|
- {fileID: 2556055579199580382}
|
||||||
|
m_Father: {fileID: 4986844661789441171}
|
||||||
|
m_RootOrder: -1
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 1, y: 1}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 0, y: 0}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &1778346978591138474
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 4272551361409990479}
|
||||||
|
m_CullTransparentMesh: 1
|
||||||
|
--- !u!114 &6421992870879591294
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 4272551361409990479}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_Color: {r: 1, g: 1, b: 1, a: 0.392}
|
||||||
|
m_RaycastTarget: 1
|
||||||
|
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_Maskable: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_Type: 1
|
||||||
|
m_PreserveAspect: 0
|
||||||
|
m_FillCenter: 1
|
||||||
|
m_FillMethod: 4
|
||||||
|
m_FillAmount: 1
|
||||||
|
m_FillClockwise: 1
|
||||||
|
m_FillOrigin: 0
|
||||||
|
m_UseSpriteMesh: 0
|
||||||
|
m_PixelsPerUnitMultiplier: 1
|
||||||
|
--- !u!1 &5221842104383226931
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 4044330358026692072}
|
||||||
|
- component: {fileID: 3449909605412981856}
|
||||||
|
- component: {fileID: 6459420328961123364}
|
||||||
|
- component: {fileID: 4974450515678071712}
|
||||||
|
- component: {fileID: 4391541691227486968}
|
||||||
|
- component: {fileID: 8181450788903950503}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: VoiceTranscriptionBox
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &4044330358026692072
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5221842104383226931}
|
||||||
|
m_LocalRotation: {x: -0, y: 1, z: -0, w: 0.00000058114523}
|
||||||
|
m_LocalPosition: {x: -76, y: 5.1475, z: -13.509}
|
||||||
|
m_LocalScale: {x: 0.75, y: 0.75, z: 0.75}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children:
|
||||||
|
- {fileID: 4986844661789441171}
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_RootOrder: 36
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0}
|
||||||
|
--- !u!33 &3449909605412981856
|
||||||
|
MeshFilter:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5221842104383226931}
|
||||||
|
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
--- !u!23 &6459420328961123364
|
||||||
|
MeshRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5221842104383226931}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_CastShadows: 1
|
||||||
|
m_ReceiveShadows: 1
|
||||||
|
m_DynamicOccludee: 1
|
||||||
|
m_StaticShadowCaster: 0
|
||||||
|
m_MotionVectors: 1
|
||||||
|
m_LightProbeUsage: 1
|
||||||
|
m_ReflectionProbeUsage: 1
|
||||||
|
m_RayTracingMode: 2
|
||||||
|
m_RayTraceProcedural: 0
|
||||||
|
m_RenderingLayerMask: 1
|
||||||
|
m_RendererPriority: 0
|
||||||
|
m_Materials:
|
||||||
|
- {fileID: 2100000, guid: 707a698b0ec80454a8c68700bca72941, type: 2}
|
||||||
|
m_StaticBatchInfo:
|
||||||
|
firstSubMesh: 0
|
||||||
|
subMeshCount: 0
|
||||||
|
m_StaticBatchRoot: {fileID: 0}
|
||||||
|
m_ProbeAnchor: {fileID: 0}
|
||||||
|
m_LightProbeVolumeOverride: {fileID: 0}
|
||||||
|
m_ScaleInLightmap: 1
|
||||||
|
m_ReceiveGI: 1
|
||||||
|
m_PreserveUVs: 0
|
||||||
|
m_IgnoreNormalsForChartDetection: 0
|
||||||
|
m_ImportantGI: 0
|
||||||
|
m_StitchLightmapSeams: 1
|
||||||
|
m_SelectedEditorRenderState: 3
|
||||||
|
m_MinimumChartSize: 4
|
||||||
|
m_AutoUVMaxDistance: 0.5
|
||||||
|
m_AutoUVMaxAngle: 89
|
||||||
|
m_LightmapParameters: {fileID: 0}
|
||||||
|
m_SortingLayerID: 0
|
||||||
|
m_SortingLayer: 0
|
||||||
|
m_SortingOrder: 0
|
||||||
|
m_AdditionalVertexStreams: {fileID: 0}
|
||||||
|
--- !u!65 &4974450515678071712
|
||||||
|
BoxCollider:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5221842104383226931}
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_IncludeLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 0
|
||||||
|
m_ExcludeLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 0
|
||||||
|
m_LayerOverridePriority: 0
|
||||||
|
m_IsTrigger: 1
|
||||||
|
m_ProvidesContacts: 0
|
||||||
|
m_Enabled: 1
|
||||||
|
serializedVersion: 3
|
||||||
|
m_Size: {x: 1, y: 1, z: 1}
|
||||||
|
m_Center: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &4391541691227486968
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5221842104383226931}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 3bc03a4c19604ea394e364f8fc632928, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
maxLengthSec: 60
|
||||||
|
loop: 0
|
||||||
|
frequency: 16000
|
||||||
|
chunksLengthSec: 0.5
|
||||||
|
echo: 1
|
||||||
|
useVad: 1
|
||||||
|
vadUpdateRateSec: 0.1
|
||||||
|
vadContextSec: 30
|
||||||
|
vadLastSec: 1.25
|
||||||
|
vadThd: 1
|
||||||
|
vadFreqThd: 100
|
||||||
|
vadIndicatorImage: {fileID: 0}
|
||||||
|
vadStop: 1
|
||||||
|
dropVadPart: 1
|
||||||
|
vadStopTime: 3
|
||||||
|
microphoneDropdown: {fileID: 0}
|
||||||
|
microphoneDefaultLabel: Default microphone
|
||||||
|
--- !u!114 &8181450788903950503
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5221842104383226931}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: d28857190597d9a46a8ddf3cf902cc81, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
activeMaterial: {fileID: 2100000, guid: 937c5f357ed270843bd43d1f7d5d475b, type: 2}
|
||||||
|
inactiveMaterial: {fileID: 2100000, guid: 707a698b0ec80454a8c68700bca72941, type: 2}
|
||||||
|
loadingMaterial: {fileID: 2100000, guid: 33390c6f2eb32df47809c60975868a0c, type: 2}
|
||||||
|
whisper: {fileID: 0}
|
||||||
|
microphoneRecord: {fileID: 4391541691227486968}
|
||||||
|
outputText: {fileID: 4513192310212875305}
|
||||||
|
currentTextOutput:
|
||||||
|
--- !u!1 &5819114791296431922
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 2556055579199580382}
|
||||||
|
- component: {fileID: 525409158048368038}
|
||||||
|
- component: {fileID: 4513192310212875305}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: StatusText
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &2556055579199580382
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5819114791296431922}
|
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 1316560435299418524}
|
||||||
|
m_RootOrder: -1
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||||
|
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 380, y: 80}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &525409158048368038
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5819114791296431922}
|
||||||
|
m_CullTransparentMesh: 1
|
||||||
|
--- !u!114 &4513192310212875305
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5819114791296431922}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_RaycastTarget: 1
|
||||||
|
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_Maskable: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_text: Transcribing voice to text...
|
||||||
|
m_isRightToLeft: 0
|
||||||
|
m_fontAsset: {fileID: 11400000, guid: 254d33525bc3919439f569ea33703c5b, type: 2}
|
||||||
|
m_sharedMaterial: {fileID: 4369893532151414794, guid: 254d33525bc3919439f569ea33703c5b,
|
||||||
|
type: 2}
|
||||||
|
m_fontSharedMaterials: []
|
||||||
|
m_fontMaterial: {fileID: 0}
|
||||||
|
m_fontMaterials: []
|
||||||
|
m_fontColor32:
|
||||||
|
serializedVersion: 2
|
||||||
|
rgba: 4294967295
|
||||||
|
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_enableVertexGradient: 0
|
||||||
|
m_colorMode: 3
|
||||||
|
m_fontColorGradient:
|
||||||
|
topLeft: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
topRight: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
bottomRight: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_fontColorGradientPreset: {fileID: 0}
|
||||||
|
m_spriteAsset: {fileID: 0}
|
||||||
|
m_tintAllSprites: 0
|
||||||
|
m_StyleSheet: {fileID: 0}
|
||||||
|
m_TextStyleHashCode: -1183493901
|
||||||
|
m_overrideHtmlColors: 0
|
||||||
|
m_faceColor:
|
||||||
|
serializedVersion: 2
|
||||||
|
rgba: 4294967295
|
||||||
|
m_fontSize: 16
|
||||||
|
m_fontSizeBase: 16
|
||||||
|
m_fontWeight: 400
|
||||||
|
m_enableAutoSizing: 0
|
||||||
|
m_fontSizeMin: 18
|
||||||
|
m_fontSizeMax: 72
|
||||||
|
m_fontStyle: 0
|
||||||
|
m_HorizontalAlignment: 2
|
||||||
|
m_VerticalAlignment: 256
|
||||||
|
m_textAlignment: 65535
|
||||||
|
m_characterSpacing: 0
|
||||||
|
m_wordSpacing: 0
|
||||||
|
m_lineSpacing: 0
|
||||||
|
m_lineSpacingMax: 0
|
||||||
|
m_paragraphSpacing: 0
|
||||||
|
m_charWidthMaxAdj: 0
|
||||||
|
m_TextWrappingMode: 1
|
||||||
|
m_wordWrappingRatios: 0.4
|
||||||
|
m_overflowMode: 0
|
||||||
|
m_linkedTextComponent: {fileID: 0}
|
||||||
|
parentLinkedComponent: {fileID: 0}
|
||||||
|
m_enableKerning: 0
|
||||||
|
m_ActiveFontFeatures: 6e72656b
|
||||||
|
m_enableExtraPadding: 0
|
||||||
|
checkPaddingRequired: 0
|
||||||
|
m_isRichText: 1
|
||||||
|
m_EmojiFallbackSupport: 1
|
||||||
|
m_parseCtrlCharacters: 1
|
||||||
|
m_isOrthographic: 1
|
||||||
|
m_isCullingEnabled: 0
|
||||||
|
m_horizontalMapping: 0
|
||||||
|
m_verticalMapping: 0
|
||||||
|
m_uvLineOffset: 0
|
||||||
|
m_geometrySortingOrder: 0
|
||||||
|
m_IsTextObjectScaleStatic: 0
|
||||||
|
m_VertexBufferAutoSizeReduction: 0
|
||||||
|
m_useMaxVisibleDescender: 1
|
||||||
|
m_pageToDisplay: 1
|
||||||
|
m_margin: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_isUsingLegacyAnimationComponent: 0
|
||||||
|
m_isVolumetricText: 0
|
||||||
|
m_hasFontAssetChanged: 0
|
||||||
|
m_baseMaterial: {fileID: 0}
|
||||||
|
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8c956d6c20b688e4facb7f343377043a
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -224,7 +224,7 @@ MonoBehaviour:
|
|||||||
m_FallbackScreenDPI: 96
|
m_FallbackScreenDPI: 96
|
||||||
m_DefaultSpriteDPI: 96
|
m_DefaultSpriteDPI: 96
|
||||||
m_DynamicPixelsPerUnit: 1
|
m_DynamicPixelsPerUnit: 1
|
||||||
m_PresetInfoIsWorld: 0
|
m_PresetInfoIsWorld: 1
|
||||||
--- !u!114 &1237163760934993280
|
--- !u!114 &1237163760934993280
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -286,7 +286,7 @@ MonoBehaviour:
|
|||||||
_initializeOrder: 0
|
_initializeOrder: 0
|
||||||
_defaultDespawnType: 1
|
_defaultDespawnType: 1
|
||||||
NetworkObserver: {fileID: 0}
|
NetworkObserver: {fileID: 0}
|
||||||
<PrefabId>k__BackingField: 5
|
<PrefabId>k__BackingField: 8
|
||||||
<SpawnableCollectionId>k__BackingField: 0
|
<SpawnableCollectionId>k__BackingField: 0
|
||||||
_scenePathHash: 0
|
_scenePathHash: 0
|
||||||
<SceneId>k__BackingField: 0
|
<SceneId>k__BackingField: 0
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
%YAML 1.1
|
%YAML 1.1
|
||||||
%TAG !u! tag:unity3d.com,2011:
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
--- !u!1 &93219228833127587
|
--- !u!1 &3508152469845169189
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
@@ -8,214 +8,8 @@ GameObject:
|
|||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
serializedVersion: 6
|
serializedVersion: 6
|
||||||
m_Component:
|
m_Component:
|
||||||
- component: {fileID: 8461444523124913307}
|
- component: {fileID: 3337587390139541606}
|
||||||
- component: {fileID: 3572526038880022669}
|
- component: {fileID: 627565954663756710}
|
||||||
- component: {fileID: 3766976745949113692}
|
|
||||||
- component: {fileID: 1047001759896168042}
|
|
||||||
- component: {fileID: 4197516043068701935}
|
|
||||||
- component: {fileID: 8992144926730888769}
|
|
||||||
- component: {fileID: 2113851326702507156}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: TargetUFO
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!4 &8461444523124913307
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 93219228833127587}
|
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
|
||||||
m_LocalPosition: {x: 1.398, y: 1.1, z: 8.292}
|
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
||||||
m_ConstrainProportionsScale: 0
|
|
||||||
m_Children:
|
|
||||||
- {fileID: 7933779445518253981}
|
|
||||||
m_Father: {fileID: 0}
|
|
||||||
m_RootOrder: 0
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!114 &3572526038880022669
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 93219228833127587}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: 3b311379c72a5ae4b8936e3b7283dd7a, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
_componentIndexCache: 0
|
|
||||||
_addedNetworkObject: {fileID: 1047001759896168042}
|
|
||||||
_networkObjectCache: {fileID: 1047001759896168042}
|
|
||||||
pointsText: {fileID: 1237163760934993282, guid: 105635d7165dacd47956f38546d4a2ea,
|
|
||||||
type: 3}
|
|
||||||
endPosition: {x: 0, y: 0, z: 0}
|
|
||||||
forwardSpeed: 2
|
|
||||||
minRandomOffset: {x: 0, y: 0, z: 0}
|
|
||||||
maxRandomOffset: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!54 &3766976745949113692
|
|
||||||
Rigidbody:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 93219228833127587}
|
|
||||||
serializedVersion: 4
|
|
||||||
m_Mass: 1
|
|
||||||
m_Drag: 0
|
|
||||||
m_AngularDrag: 0
|
|
||||||
m_CenterOfMass: {x: 0, y: 0, z: 0}
|
|
||||||
m_InertiaTensor: {x: 1, y: 1, z: 1}
|
|
||||||
m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1}
|
|
||||||
m_IncludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_ExcludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_ImplicitCom: 1
|
|
||||||
m_ImplicitTensor: 1
|
|
||||||
m_UseGravity: 0
|
|
||||||
m_IsKinematic: 1
|
|
||||||
m_Interpolate: 0
|
|
||||||
m_Constraints: 126
|
|
||||||
m_CollisionDetection: 0
|
|
||||||
--- !u!114 &1047001759896168042
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 93219228833127587}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: 26b716c41e9b56b4baafaf13a523ba2e, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
<IsNested>k__BackingField: 0
|
|
||||||
<ComponentIndex>k__BackingField: 0
|
|
||||||
<PredictedSpawn>k__BackingField: {fileID: 0}
|
|
||||||
_networkBehaviours:
|
|
||||||
- {fileID: 3572526038880022669}
|
|
||||||
- {fileID: 4197516043068701935}
|
|
||||||
- {fileID: 7294680161384397297}
|
|
||||||
- {fileID: 3316891016740450456}
|
|
||||||
- {fileID: 8062271296867124751}
|
|
||||||
- {fileID: 8618473685913268443}
|
|
||||||
<ParentNetworkObject>k__BackingField: {fileID: 0}
|
|
||||||
<ChildNetworkObjects>k__BackingField: []
|
|
||||||
_isNetworked: 1
|
|
||||||
_isGlobal: 0
|
|
||||||
_initializeOrder: 0
|
|
||||||
_defaultDespawnType: 1
|
|
||||||
NetworkObserver: {fileID: 0}
|
|
||||||
<PrefabId>k__BackingField: 9
|
|
||||||
<SpawnableCollectionId>k__BackingField: 0
|
|
||||||
_scenePathHash: 0
|
|
||||||
<SceneId>k__BackingField: 0
|
|
||||||
<AssetPathHash>k__BackingField: 12713957617246967544
|
|
||||||
_sceneNetworkObjects: []
|
|
||||||
--- !u!114 &4197516043068701935
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 93219228833127587}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: a2836e36774ca1c4bbbee976e17b649c, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
_componentIndexCache: 1
|
|
||||||
_addedNetworkObject: {fileID: 1047001759896168042}
|
|
||||||
_networkObjectCache: {fileID: 1047001759896168042}
|
|
||||||
_synchronizeParent: 0
|
|
||||||
_packing:
|
|
||||||
Position: 1
|
|
||||||
Rotation: 1
|
|
||||||
Scale: 0
|
|
||||||
_interpolation: 2
|
|
||||||
_extrapolation: 2
|
|
||||||
_enableTeleport: 0
|
|
||||||
_teleportThreshold: 1
|
|
||||||
_clientAuthoritative: 1
|
|
||||||
_sendToOwner: 1
|
|
||||||
_synchronizePosition: 1
|
|
||||||
_positionSnapping:
|
|
||||||
X: 0
|
|
||||||
Y: 0
|
|
||||||
Z: 0
|
|
||||||
_synchronizeRotation: 1
|
|
||||||
_rotationSnapping:
|
|
||||||
X: 0
|
|
||||||
Y: 0
|
|
||||||
Z: 0
|
|
||||||
_synchronizeScale: 1
|
|
||||||
_scaleSnapping:
|
|
||||||
X: 0
|
|
||||||
Y: 0
|
|
||||||
Z: 0
|
|
||||||
--- !u!136 &8992144926730888769
|
|
||||||
CapsuleCollider:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 93219228833127587}
|
|
||||||
m_Material: {fileID: 0}
|
|
||||||
m_IncludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_ExcludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_LayerOverridePriority: 0
|
|
||||||
m_IsTrigger: 0
|
|
||||||
m_ProvidesContacts: 0
|
|
||||||
m_Enabled: 1
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Radius: 1.07
|
|
||||||
m_Height: 0.97
|
|
||||||
m_Direction: 1
|
|
||||||
m_Center: {x: 0.16, y: -0.51, z: 0}
|
|
||||||
--- !u!65 &2113851326702507156
|
|
||||||
BoxCollider:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 93219228833127587}
|
|
||||||
m_Material: {fileID: 0}
|
|
||||||
m_IncludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_ExcludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_LayerOverridePriority: 0
|
|
||||||
m_IsTrigger: 0
|
|
||||||
m_ProvidesContacts: 0
|
|
||||||
m_Enabled: 1
|
|
||||||
serializedVersion: 3
|
|
||||||
m_Size: {x: 4.5, y: 0.5, z: 3.77}
|
|
||||||
m_Center: {x: 0.12, y: -0.24, z: 0.06}
|
|
||||||
--- !u!1 &1503281482029840645
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 7933779445518253981}
|
|
||||||
- component: {fileID: 7294680161384397297}
|
|
||||||
m_Layer: 0
|
m_Layer: 0
|
||||||
m_Name: SportModel
|
m_Name: SportModel
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
@@ -223,39 +17,39 @@ GameObject:
|
|||||||
m_NavMeshLayer: 0
|
m_NavMeshLayer: 0
|
||||||
m_StaticEditorFlags: 0
|
m_StaticEditorFlags: 0
|
||||||
m_IsActive: 1
|
m_IsActive: 1
|
||||||
--- !u!4 &7933779445518253981
|
--- !u!4 &3337587390139541606
|
||||||
Transform:
|
Transform:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
m_PrefabInstance: {fileID: 0}
|
m_PrefabInstance: {fileID: 0}
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 1503281482029840645}
|
m_GameObject: {fileID: 3508152469845169189}
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
m_LocalScale: {x: 0.24, y: 0.2, z: 0.2}
|
m_LocalScale: {x: 0.24, y: 0.2, z: 0.2}
|
||||||
m_ConstrainProportionsScale: 0
|
m_ConstrainProportionsScale: 0
|
||||||
m_Children:
|
m_Children:
|
||||||
- {fileID: 7485665512278860578}
|
- {fileID: 4011537191296717654}
|
||||||
- {fileID: 4684626877529458816}
|
- {fileID: 2406214921254263651}
|
||||||
- {fileID: 7773470377489803008}
|
- {fileID: 1251512755648678878}
|
||||||
m_Father: {fileID: 8461444523124913307}
|
m_Father: {fileID: 7527508320363503049}
|
||||||
m_RootOrder: 0
|
m_RootOrder: 0
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
--- !u!114 &7294680161384397297
|
--- !u!114 &627565954663756710
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
m_PrefabInstance: {fileID: 0}
|
m_PrefabInstance: {fileID: 0}
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 1503281482029840645}
|
m_GameObject: {fileID: 3508152469845169189}
|
||||||
m_Enabled: 1
|
m_Enabled: 1
|
||||||
m_EditorHideFlags: 0
|
m_EditorHideFlags: 0
|
||||||
m_Script: {fileID: 11500000, guid: a2836e36774ca1c4bbbee976e17b649c, type: 3}
|
m_Script: {fileID: 11500000, guid: a2836e36774ca1c4bbbee976e17b649c, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
_componentIndexCache: 2
|
_componentIndexCache: 2
|
||||||
_addedNetworkObject: {fileID: 1047001759896168042}
|
_addedNetworkObject: {fileID: 2689384198849609103}
|
||||||
_networkObjectCache: {fileID: 1047001759896168042}
|
_networkObjectCache: {fileID: 2689384198849609103}
|
||||||
_synchronizeParent: 0
|
_synchronizeParent: 0
|
||||||
_packing:
|
_packing:
|
||||||
Position: 1
|
Position: 1
|
||||||
@@ -282,7 +76,7 @@ MonoBehaviour:
|
|||||||
X: 0
|
X: 0
|
||||||
Y: 0
|
Y: 0
|
||||||
Z: 0
|
Z: 0
|
||||||
--- !u!1 &1632486231925472392
|
--- !u!1 &6744593628588765187
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
@@ -290,135 +84,10 @@ GameObject:
|
|||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
serializedVersion: 6
|
serializedVersion: 6
|
||||||
m_Component:
|
m_Component:
|
||||||
- component: {fileID: 7485665512278860578}
|
- component: {fileID: 1251512755648678878}
|
||||||
- component: {fileID: 3926456361165891691}
|
- component: {fileID: 4963625795242203983}
|
||||||
- component: {fileID: 371703801869909332}
|
- component: {fileID: 5457198189491340073}
|
||||||
- component: {fileID: 3316891016740450456}
|
- component: {fileID: 8959643074287331097}
|
||||||
m_Layer: 0
|
|
||||||
m_Name: BezierCurve.005
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!4 &7485665512278860578
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 1632486231925472392}
|
|
||||||
m_LocalRotation: {x: 0.00000031987892, y: 0, z: -0, w: 1}
|
|
||||||
m_LocalPosition: {x: 0.5, y: 0.3, z: 0.3}
|
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
||||||
m_ConstrainProportionsScale: 0
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 7933779445518253981}
|
|
||||||
m_RootOrder: 0
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!33 &3926456361165891691
|
|
||||||
MeshFilter:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 1632486231925472392}
|
|
||||||
m_Mesh: {fileID: 2876602339255033164, guid: e2b74575a515c794786457a323da7b69, type: 3}
|
|
||||||
--- !u!23 &371703801869909332
|
|
||||||
MeshRenderer:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 1632486231925472392}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_CastShadows: 1
|
|
||||||
m_ReceiveShadows: 1
|
|
||||||
m_DynamicOccludee: 1
|
|
||||||
m_StaticShadowCaster: 0
|
|
||||||
m_MotionVectors: 1
|
|
||||||
m_LightProbeUsage: 1
|
|
||||||
m_ReflectionProbeUsage: 1
|
|
||||||
m_RayTracingMode: 2
|
|
||||||
m_RayTraceProcedural: 0
|
|
||||||
m_RenderingLayerMask: 1
|
|
||||||
m_RendererPriority: 0
|
|
||||||
m_Materials:
|
|
||||||
- {fileID: 2100000, guid: a3ce1b39b1e52c94398a08157fda1dff, type: 2}
|
|
||||||
m_StaticBatchInfo:
|
|
||||||
firstSubMesh: 0
|
|
||||||
subMeshCount: 0
|
|
||||||
m_StaticBatchRoot: {fileID: 0}
|
|
||||||
m_ProbeAnchor: {fileID: 0}
|
|
||||||
m_LightProbeVolumeOverride: {fileID: 0}
|
|
||||||
m_ScaleInLightmap: 1
|
|
||||||
m_ReceiveGI: 1
|
|
||||||
m_PreserveUVs: 0
|
|
||||||
m_IgnoreNormalsForChartDetection: 0
|
|
||||||
m_ImportantGI: 0
|
|
||||||
m_StitchLightmapSeams: 1
|
|
||||||
m_SelectedEditorRenderState: 3
|
|
||||||
m_MinimumChartSize: 4
|
|
||||||
m_AutoUVMaxDistance: 0.5
|
|
||||||
m_AutoUVMaxAngle: 89
|
|
||||||
m_LightmapParameters: {fileID: 0}
|
|
||||||
m_SortingLayerID: 0
|
|
||||||
m_SortingLayer: 0
|
|
||||||
m_SortingOrder: 0
|
|
||||||
m_AdditionalVertexStreams: {fileID: 0}
|
|
||||||
--- !u!114 &3316891016740450456
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 1632486231925472392}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: a2836e36774ca1c4bbbee976e17b649c, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
_componentIndexCache: 3
|
|
||||||
_addedNetworkObject: {fileID: 1047001759896168042}
|
|
||||||
_networkObjectCache: {fileID: 1047001759896168042}
|
|
||||||
_synchronizeParent: 0
|
|
||||||
_packing:
|
|
||||||
Position: 1
|
|
||||||
Rotation: 1
|
|
||||||
Scale: 0
|
|
||||||
_interpolation: 2
|
|
||||||
_extrapolation: 2
|
|
||||||
_enableTeleport: 0
|
|
||||||
_teleportThreshold: 1
|
|
||||||
_clientAuthoritative: 1
|
|
||||||
_sendToOwner: 1
|
|
||||||
_synchronizePosition: 1
|
|
||||||
_positionSnapping:
|
|
||||||
X: 0
|
|
||||||
Y: 0
|
|
||||||
Z: 0
|
|
||||||
_synchronizeRotation: 1
|
|
||||||
_rotationSnapping:
|
|
||||||
X: 0
|
|
||||||
Y: 0
|
|
||||||
Z: 0
|
|
||||||
_synchronizeScale: 1
|
|
||||||
_scaleSnapping:
|
|
||||||
X: 0
|
|
||||||
Y: 0
|
|
||||||
Z: 0
|
|
||||||
--- !u!1 &5151923169000496226
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 7773470377489803008}
|
|
||||||
- component: {fileID: 2351792501279987261}
|
|
||||||
- component: {fileID: 6736142794574324875}
|
|
||||||
- component: {fileID: 8618473685913268443}
|
|
||||||
m_Layer: 0
|
m_Layer: 0
|
||||||
m_Name: BezierCurve.007
|
m_Name: BezierCurve.007
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
@@ -426,36 +95,36 @@ GameObject:
|
|||||||
m_NavMeshLayer: 0
|
m_NavMeshLayer: 0
|
||||||
m_StaticEditorFlags: 0
|
m_StaticEditorFlags: 0
|
||||||
m_IsActive: 1
|
m_IsActive: 1
|
||||||
--- !u!4 &7773470377489803008
|
--- !u!4 &1251512755648678878
|
||||||
Transform:
|
Transform:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
m_PrefabInstance: {fileID: 0}
|
m_PrefabInstance: {fileID: 0}
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 5151923169000496226}
|
m_GameObject: {fileID: 6744593628588765187}
|
||||||
m_LocalRotation: {x: 0.00000031987892, y: 0, z: -0, w: 1}
|
m_LocalRotation: {x: 0.00000031987892, y: 0, z: -0, w: 1}
|
||||||
m_LocalPosition: {x: 0.5, y: -1.2, z: 0.3}
|
m_LocalPosition: {x: 0.5, y: -1.2, z: 0.3}
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
m_ConstrainProportionsScale: 0
|
m_ConstrainProportionsScale: 0
|
||||||
m_Children: []
|
m_Children: []
|
||||||
m_Father: {fileID: 7933779445518253981}
|
m_Father: {fileID: 3337587390139541606}
|
||||||
m_RootOrder: 2
|
m_RootOrder: 2
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
--- !u!33 &2351792501279987261
|
--- !u!33 &4963625795242203983
|
||||||
MeshFilter:
|
MeshFilter:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
m_PrefabInstance: {fileID: 0}
|
m_PrefabInstance: {fileID: 0}
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 5151923169000496226}
|
m_GameObject: {fileID: 6744593628588765187}
|
||||||
m_Mesh: {fileID: 7696143681509816967, guid: e2b74575a515c794786457a323da7b69, type: 3}
|
m_Mesh: {fileID: 7696143681509816967, guid: e2b74575a515c794786457a323da7b69, type: 3}
|
||||||
--- !u!23 &6736142794574324875
|
--- !u!23 &5457198189491340073
|
||||||
MeshRenderer:
|
MeshRenderer:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
m_PrefabInstance: {fileID: 0}
|
m_PrefabInstance: {fileID: 0}
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 5151923169000496226}
|
m_GameObject: {fileID: 6744593628588765187}
|
||||||
m_Enabled: 1
|
m_Enabled: 1
|
||||||
m_CastShadows: 1
|
m_CastShadows: 1
|
||||||
m_ReceiveShadows: 1
|
m_ReceiveShadows: 1
|
||||||
@@ -492,21 +161,21 @@ MeshRenderer:
|
|||||||
m_SortingLayer: 0
|
m_SortingLayer: 0
|
||||||
m_SortingOrder: 0
|
m_SortingOrder: 0
|
||||||
m_AdditionalVertexStreams: {fileID: 0}
|
m_AdditionalVertexStreams: {fileID: 0}
|
||||||
--- !u!114 &8618473685913268443
|
--- !u!114 &8959643074287331097
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
m_PrefabInstance: {fileID: 0}
|
m_PrefabInstance: {fileID: 0}
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 5151923169000496226}
|
m_GameObject: {fileID: 6744593628588765187}
|
||||||
m_Enabled: 1
|
m_Enabled: 1
|
||||||
m_EditorHideFlags: 0
|
m_EditorHideFlags: 0
|
||||||
m_Script: {fileID: 11500000, guid: a2836e36774ca1c4bbbee976e17b649c, type: 3}
|
m_Script: {fileID: 11500000, guid: a2836e36774ca1c4bbbee976e17b649c, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
_componentIndexCache: 5
|
_componentIndexCache: 5
|
||||||
_addedNetworkObject: {fileID: 1047001759896168042}
|
_addedNetworkObject: {fileID: 2689384198849609103}
|
||||||
_networkObjectCache: {fileID: 1047001759896168042}
|
_networkObjectCache: {fileID: 2689384198849609103}
|
||||||
_synchronizeParent: 0
|
_synchronizeParent: 0
|
||||||
_packing:
|
_packing:
|
||||||
Position: 1
|
Position: 1
|
||||||
@@ -533,7 +202,7 @@ MonoBehaviour:
|
|||||||
X: 0
|
X: 0
|
||||||
Y: 0
|
Y: 0
|
||||||
Z: 0
|
Z: 0
|
||||||
--- !u!1 &8543541715831694094
|
--- !u!1 &7680366769166628765
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
@@ -541,47 +210,47 @@ GameObject:
|
|||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
serializedVersion: 6
|
serializedVersion: 6
|
||||||
m_Component:
|
m_Component:
|
||||||
- component: {fileID: 4684626877529458816}
|
- component: {fileID: 4011537191296717654}
|
||||||
- component: {fileID: 5669060522451679251}
|
- component: {fileID: 1910778184414920112}
|
||||||
- component: {fileID: 1061113289265401427}
|
- component: {fileID: 363608006073787400}
|
||||||
- component: {fileID: 8062271296867124751}
|
- component: {fileID: 4439869206153374580}
|
||||||
m_Layer: 0
|
m_Layer: 0
|
||||||
m_Name: BezierCurve.006
|
m_Name: BezierCurve.005
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
m_Icon: {fileID: 0}
|
m_Icon: {fileID: 0}
|
||||||
m_NavMeshLayer: 0
|
m_NavMeshLayer: 0
|
||||||
m_StaticEditorFlags: 0
|
m_StaticEditorFlags: 0
|
||||||
m_IsActive: 1
|
m_IsActive: 1
|
||||||
--- !u!4 &4684626877529458816
|
--- !u!4 &4011537191296717654
|
||||||
Transform:
|
Transform:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
m_PrefabInstance: {fileID: 0}
|
m_PrefabInstance: {fileID: 0}
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 8543541715831694094}
|
m_GameObject: {fileID: 7680366769166628765}
|
||||||
m_LocalRotation: {x: -0.00000015993946, y: 0.86602545, z: -0.00000027702328, w: -0.49999997}
|
m_LocalRotation: {x: 0.00000031987892, y: 0, z: -0, w: 1}
|
||||||
m_LocalPosition: {x: 0.5, y: -3.4, z: 0.3}
|
m_LocalPosition: {x: 0.5, y: 0.3, z: 0.3}
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
m_ConstrainProportionsScale: 0
|
m_ConstrainProportionsScale: 0
|
||||||
m_Children: []
|
m_Children: []
|
||||||
m_Father: {fileID: 7933779445518253981}
|
m_Father: {fileID: 3337587390139541606}
|
||||||
m_RootOrder: 1
|
m_RootOrder: 0
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
--- !u!33 &5669060522451679251
|
--- !u!33 &1910778184414920112
|
||||||
MeshFilter:
|
MeshFilter:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
m_PrefabInstance: {fileID: 0}
|
m_PrefabInstance: {fileID: 0}
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 8543541715831694094}
|
m_GameObject: {fileID: 7680366769166628765}
|
||||||
m_Mesh: {fileID: 2026425019520300902, guid: e2b74575a515c794786457a323da7b69, type: 3}
|
m_Mesh: {fileID: 2876602339255033164, guid: e2b74575a515c794786457a323da7b69, type: 3}
|
||||||
--- !u!23 &1061113289265401427
|
--- !u!23 &363608006073787400
|
||||||
MeshRenderer:
|
MeshRenderer:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
m_PrefabInstance: {fileID: 0}
|
m_PrefabInstance: {fileID: 0}
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 8543541715831694094}
|
m_GameObject: {fileID: 7680366769166628765}
|
||||||
m_Enabled: 1
|
m_Enabled: 1
|
||||||
m_CastShadows: 1
|
m_CastShadows: 1
|
||||||
m_ReceiveShadows: 1
|
m_ReceiveShadows: 1
|
||||||
@@ -617,21 +286,350 @@ MeshRenderer:
|
|||||||
m_SortingLayer: 0
|
m_SortingLayer: 0
|
||||||
m_SortingOrder: 0
|
m_SortingOrder: 0
|
||||||
m_AdditionalVertexStreams: {fileID: 0}
|
m_AdditionalVertexStreams: {fileID: 0}
|
||||||
--- !u!114 &8062271296867124751
|
--- !u!114 &4439869206153374580
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
m_PrefabInstance: {fileID: 0}
|
m_PrefabInstance: {fileID: 0}
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 8543541715831694094}
|
m_GameObject: {fileID: 7680366769166628765}
|
||||||
m_Enabled: 1
|
m_Enabled: 1
|
||||||
m_EditorHideFlags: 0
|
m_EditorHideFlags: 0
|
||||||
m_Script: {fileID: 11500000, guid: a2836e36774ca1c4bbbee976e17b649c, type: 3}
|
m_Script: {fileID: 11500000, guid: a2836e36774ca1c4bbbee976e17b649c, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
_componentIndexCache: 4
|
_componentIndexCache: 3
|
||||||
_addedNetworkObject: {fileID: 1047001759896168042}
|
_addedNetworkObject: {fileID: 2689384198849609103}
|
||||||
_networkObjectCache: {fileID: 1047001759896168042}
|
_networkObjectCache: {fileID: 2689384198849609103}
|
||||||
|
_synchronizeParent: 0
|
||||||
|
_packing:
|
||||||
|
Position: 1
|
||||||
|
Rotation: 1
|
||||||
|
Scale: 0
|
||||||
|
_interpolation: 2
|
||||||
|
_extrapolation: 2
|
||||||
|
_enableTeleport: 0
|
||||||
|
_teleportThreshold: 1
|
||||||
|
_clientAuthoritative: 1
|
||||||
|
_sendToOwner: 1
|
||||||
|
_synchronizePosition: 1
|
||||||
|
_positionSnapping:
|
||||||
|
X: 0
|
||||||
|
Y: 0
|
||||||
|
Z: 0
|
||||||
|
_synchronizeRotation: 1
|
||||||
|
_rotationSnapping:
|
||||||
|
X: 0
|
||||||
|
Y: 0
|
||||||
|
Z: 0
|
||||||
|
_synchronizeScale: 1
|
||||||
|
_scaleSnapping:
|
||||||
|
X: 0
|
||||||
|
Y: 0
|
||||||
|
Z: 0
|
||||||
|
--- !u!1 &7983999977322064054
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 7527508320363503049}
|
||||||
|
- component: {fileID: 4850307641519017041}
|
||||||
|
- component: {fileID: 8954823527229761837}
|
||||||
|
- component: {fileID: 2689384198849609103}
|
||||||
|
- component: {fileID: 1843883317757509263}
|
||||||
|
- component: {fileID: 7451921017238644471}
|
||||||
|
- component: {fileID: 2131608416831220487}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: TargetUFO
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &7527508320363503049
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7983999977322064054}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 1.398, y: 1.1, z: 8.292}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children:
|
||||||
|
- {fileID: 3337587390139541606}
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &4850307641519017041
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7983999977322064054}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 3b311379c72a5ae4b8936e3b7283dd7a, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
_componentIndexCache: 0
|
||||||
|
_addedNetworkObject: {fileID: 2689384198849609103}
|
||||||
|
_networkObjectCache: {fileID: 2689384198849609103}
|
||||||
|
pointsText: {fileID: 1237163760934993282, guid: 105635d7165dacd47956f38546d4a2ea,
|
||||||
|
type: 3}
|
||||||
|
endPosition: {x: 0, y: 0, z: 0}
|
||||||
|
forwardSpeed: 2
|
||||||
|
--- !u!54 &8954823527229761837
|
||||||
|
Rigidbody:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7983999977322064054}
|
||||||
|
serializedVersion: 4
|
||||||
|
m_Mass: 1
|
||||||
|
m_Drag: 0
|
||||||
|
m_AngularDrag: 0
|
||||||
|
m_CenterOfMass: {x: 0, y: 0, z: 0}
|
||||||
|
m_InertiaTensor: {x: 1, y: 1, z: 1}
|
||||||
|
m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_IncludeLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 0
|
||||||
|
m_ExcludeLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 0
|
||||||
|
m_ImplicitCom: 1
|
||||||
|
m_ImplicitTensor: 1
|
||||||
|
m_UseGravity: 0
|
||||||
|
m_IsKinematic: 1
|
||||||
|
m_Interpolate: 0
|
||||||
|
m_Constraints: 126
|
||||||
|
m_CollisionDetection: 0
|
||||||
|
--- !u!114 &2689384198849609103
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7983999977322064054}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 26b716c41e9b56b4baafaf13a523ba2e, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
<IsNested>k__BackingField: 0
|
||||||
|
<ComponentIndex>k__BackingField: 0
|
||||||
|
<PredictedSpawn>k__BackingField: {fileID: 0}
|
||||||
|
_networkBehaviours:
|
||||||
|
- {fileID: 4850307641519017041}
|
||||||
|
- {fileID: 1843883317757509263}
|
||||||
|
- {fileID: 627565954663756710}
|
||||||
|
- {fileID: 4439869206153374580}
|
||||||
|
- {fileID: 6540522042633253623}
|
||||||
|
- {fileID: 8959643074287331097}
|
||||||
|
<ParentNetworkObject>k__BackingField: {fileID: 0}
|
||||||
|
<ChildNetworkObjects>k__BackingField: []
|
||||||
|
_isNetworked: 1
|
||||||
|
_isGlobal: 0
|
||||||
|
_initializeOrder: 0
|
||||||
|
_defaultDespawnType: 1
|
||||||
|
NetworkObserver: {fileID: 0}
|
||||||
|
<PrefabId>k__BackingField: 9
|
||||||
|
<SpawnableCollectionId>k__BackingField: 0
|
||||||
|
_scenePathHash: 0
|
||||||
|
<SceneId>k__BackingField: 0
|
||||||
|
<AssetPathHash>k__BackingField: 12713957617246967544
|
||||||
|
_sceneNetworkObjects: []
|
||||||
|
--- !u!114 &1843883317757509263
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7983999977322064054}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: a2836e36774ca1c4bbbee976e17b649c, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
_componentIndexCache: 1
|
||||||
|
_addedNetworkObject: {fileID: 2689384198849609103}
|
||||||
|
_networkObjectCache: {fileID: 2689384198849609103}
|
||||||
|
_synchronizeParent: 0
|
||||||
|
_packing:
|
||||||
|
Position: 1
|
||||||
|
Rotation: 1
|
||||||
|
Scale: 0
|
||||||
|
_interpolation: 2
|
||||||
|
_extrapolation: 2
|
||||||
|
_enableTeleport: 0
|
||||||
|
_teleportThreshold: 1
|
||||||
|
_clientAuthoritative: 1
|
||||||
|
_sendToOwner: 1
|
||||||
|
_synchronizePosition: 1
|
||||||
|
_positionSnapping:
|
||||||
|
X: 0
|
||||||
|
Y: 0
|
||||||
|
Z: 0
|
||||||
|
_synchronizeRotation: 1
|
||||||
|
_rotationSnapping:
|
||||||
|
X: 0
|
||||||
|
Y: 0
|
||||||
|
Z: 0
|
||||||
|
_synchronizeScale: 1
|
||||||
|
_scaleSnapping:
|
||||||
|
X: 0
|
||||||
|
Y: 0
|
||||||
|
Z: 0
|
||||||
|
--- !u!136 &7451921017238644471
|
||||||
|
CapsuleCollider:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7983999977322064054}
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_IncludeLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 0
|
||||||
|
m_ExcludeLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 0
|
||||||
|
m_LayerOverridePriority: 0
|
||||||
|
m_IsTrigger: 0
|
||||||
|
m_ProvidesContacts: 0
|
||||||
|
m_Enabled: 1
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Radius: 1.07
|
||||||
|
m_Height: 0.97
|
||||||
|
m_Direction: 1
|
||||||
|
m_Center: {x: 0.16, y: -0.51, z: 0}
|
||||||
|
--- !u!65 &2131608416831220487
|
||||||
|
BoxCollider:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7983999977322064054}
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_IncludeLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 0
|
||||||
|
m_ExcludeLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 0
|
||||||
|
m_LayerOverridePriority: 0
|
||||||
|
m_IsTrigger: 0
|
||||||
|
m_ProvidesContacts: 0
|
||||||
|
m_Enabled: 1
|
||||||
|
serializedVersion: 3
|
||||||
|
m_Size: {x: 4.5, y: 0.5, z: 3.77}
|
||||||
|
m_Center: {x: 0.12, y: -0.24, z: 0.06}
|
||||||
|
--- !u!1 &8462201784916155029
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 2406214921254263651}
|
||||||
|
- component: {fileID: 6767210086105080178}
|
||||||
|
- component: {fileID: 3766991064380355318}
|
||||||
|
- component: {fileID: 6540522042633253623}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: BezierCurve.006
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &2406214921254263651
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 8462201784916155029}
|
||||||
|
m_LocalRotation: {x: -0.00000015993946, y: 0.86602545, z: -0.00000027702328, w: -0.49999997}
|
||||||
|
m_LocalPosition: {x: 0.5, y: -3.4, z: 0.3}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 3337587390139541606}
|
||||||
|
m_RootOrder: 1
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!33 &6767210086105080178
|
||||||
|
MeshFilter:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 8462201784916155029}
|
||||||
|
m_Mesh: {fileID: 2026425019520300902, guid: e2b74575a515c794786457a323da7b69, type: 3}
|
||||||
|
--- !u!23 &3766991064380355318
|
||||||
|
MeshRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 8462201784916155029}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_CastShadows: 1
|
||||||
|
m_ReceiveShadows: 1
|
||||||
|
m_DynamicOccludee: 1
|
||||||
|
m_StaticShadowCaster: 0
|
||||||
|
m_MotionVectors: 1
|
||||||
|
m_LightProbeUsage: 1
|
||||||
|
m_ReflectionProbeUsage: 1
|
||||||
|
m_RayTracingMode: 2
|
||||||
|
m_RayTraceProcedural: 0
|
||||||
|
m_RenderingLayerMask: 1
|
||||||
|
m_RendererPriority: 0
|
||||||
|
m_Materials:
|
||||||
|
- {fileID: 2100000, guid: a3ce1b39b1e52c94398a08157fda1dff, type: 2}
|
||||||
|
m_StaticBatchInfo:
|
||||||
|
firstSubMesh: 0
|
||||||
|
subMeshCount: 0
|
||||||
|
m_StaticBatchRoot: {fileID: 0}
|
||||||
|
m_ProbeAnchor: {fileID: 0}
|
||||||
|
m_LightProbeVolumeOverride: {fileID: 0}
|
||||||
|
m_ScaleInLightmap: 1
|
||||||
|
m_ReceiveGI: 1
|
||||||
|
m_PreserveUVs: 0
|
||||||
|
m_IgnoreNormalsForChartDetection: 0
|
||||||
|
m_ImportantGI: 0
|
||||||
|
m_StitchLightmapSeams: 1
|
||||||
|
m_SelectedEditorRenderState: 3
|
||||||
|
m_MinimumChartSize: 4
|
||||||
|
m_AutoUVMaxDistance: 0.5
|
||||||
|
m_AutoUVMaxAngle: 89
|
||||||
|
m_LightmapParameters: {fileID: 0}
|
||||||
|
m_SortingLayerID: 0
|
||||||
|
m_SortingLayer: 0
|
||||||
|
m_SortingOrder: 0
|
||||||
|
m_AdditionalVertexStreams: {fileID: 0}
|
||||||
|
--- !u!114 &6540522042633253623
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 8462201784916155029}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: a2836e36774ca1c4bbbee976e17b649c, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
_componentIndexCache: 4
|
||||||
|
_addedNetworkObject: {fileID: 2689384198849609103}
|
||||||
|
_networkObjectCache: {fileID: 2689384198849609103}
|
||||||
_synchronizeParent: 0
|
_synchronizeParent: 0
|
||||||
_packing:
|
_packing:
|
||||||
Position: 1
|
Position: 1
|
||||||
|
|||||||
Binary file not shown.
8
Assets/_PROJECT/Scripts/ModeGeneration.meta
Normal file
8
Assets/_PROJECT/Scripts/ModeGeneration.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 0ec3982ba49c4b84ea95332cb090e115
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
60
Assets/_PROJECT/Scripts/ModeGeneration/ModelGenerationBox.cs
Normal file
60
Assets/_PROJECT/Scripts/ModeGeneration/ModelGenerationBox.cs
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
using Unity.XR.CoreUtils;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
public class ModelGenerationBox : MonoBehaviour
|
||||||
|
{
|
||||||
|
public Material inactiveMaterial;
|
||||||
|
public Material loadingMaterial;
|
||||||
|
|
||||||
|
public Transform modelSpawnPoint;
|
||||||
|
public VoiceTranscriptionBox voiceTranscriptionTestBox;
|
||||||
|
|
||||||
|
private MeshRenderer meshRenderer;
|
||||||
|
private bool isLoading;
|
||||||
|
|
||||||
|
private string lastModelPath;
|
||||||
|
public string LastModelPath
|
||||||
|
{
|
||||||
|
get {
|
||||||
|
return lastModelPath;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Start is called before the first frame update
|
||||||
|
void Start()
|
||||||
|
{
|
||||||
|
meshRenderer = GetComponent<MeshRenderer>();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update is called once per frame
|
||||||
|
void Update()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
async void OnTriggerEnter(Collider other)
|
||||||
|
{
|
||||||
|
if (isLoading) return;
|
||||||
|
|
||||||
|
KbmController controller = other.GetComponent<KbmController>();
|
||||||
|
XROrigin playerOrigin = other.GetComponent<XROrigin>();
|
||||||
|
if (controller != null || playerOrigin != null)
|
||||||
|
{
|
||||||
|
string inputPrompt = voiceTranscriptionTestBox.LastTextOutput;
|
||||||
|
|
||||||
|
isLoading = true;
|
||||||
|
meshRenderer.material = loadingMaterial;
|
||||||
|
|
||||||
|
string modelPath = await PipelineManager.Instance.GenerateModelAsync(inputPrompt);
|
||||||
|
lastModelPath = modelPath;
|
||||||
|
|
||||||
|
GameObject spawnedObject = await PipelineManager.Instance.SpawnModel(modelPath);
|
||||||
|
spawnedObject.AddComponent<Rigidbody>();
|
||||||
|
spawnedObject.transform.parent = modelSpawnPoint;
|
||||||
|
spawnedObject.transform.position = modelSpawnPoint.position;
|
||||||
|
|
||||||
|
isLoading = false;
|
||||||
|
meshRenderer.material = inactiveMaterial;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 46e67223dce9b7a4783ed36b8ed65f19
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
105
Assets/_PROJECT/Scripts/ModeGeneration/PipelineManager.cs
Normal file
105
Assets/_PROJECT/Scripts/ModeGeneration/PipelineManager.cs
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
using GLTFast;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.IO;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
public class PipelineManager : MonoBehaviour
|
||||||
|
{
|
||||||
|
public static PipelineManager Instance { get; private set; }
|
||||||
|
|
||||||
|
private void Awake()
|
||||||
|
{
|
||||||
|
Instance = this;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Start is called before the first frame update
|
||||||
|
void Start()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update is called once per frame
|
||||||
|
void Update()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<string> GenerateModelAsync(string inputPrompt)
|
||||||
|
{
|
||||||
|
return await Task.Run(() =>
|
||||||
|
{
|
||||||
|
// Path to your virtual environment's python.exe
|
||||||
|
string pythonExe = @"D:\users\henrisel\DeltaVR3DModelGeneration\3d-generation-pipeline\.venv\Scripts\python.exe";
|
||||||
|
|
||||||
|
// Path to your Python script
|
||||||
|
string scriptPath = @"D:\users\henrisel\DeltaVR3DModelGeneration\3d-generation-pipeline\start_pipeline.py";
|
||||||
|
|
||||||
|
// Arguments to pass to the script
|
||||||
|
string arguments = $"{scriptPath} --prompt \"{inputPrompt}\"";
|
||||||
|
|
||||||
|
ProcessStartInfo psi = new ProcessStartInfo
|
||||||
|
{
|
||||||
|
FileName = pythonExe,
|
||||||
|
Arguments = arguments,
|
||||||
|
UseShellExecute = false,
|
||||||
|
RedirectStandardOutput = true,
|
||||||
|
RedirectStandardError = true,
|
||||||
|
CreateNoWindow = true
|
||||||
|
};
|
||||||
|
|
||||||
|
using (Process process = new Process())
|
||||||
|
{
|
||||||
|
process.StartInfo = psi;
|
||||||
|
process.OutputDataReceived += (sender, e) => UnityEngine.Debug.Log(e.Data);
|
||||||
|
process.ErrorDataReceived += (sender, e) => UnityEngine.Debug.LogError(e.Data);
|
||||||
|
|
||||||
|
process.Start();
|
||||||
|
|
||||||
|
string output = process.StandardOutput.ReadToEnd();
|
||||||
|
string error = process.StandardError.ReadToEnd();
|
||||||
|
|
||||||
|
process.WaitForExit();
|
||||||
|
|
||||||
|
|
||||||
|
// Extract model path from output
|
||||||
|
foreach (string line in output.Split('\n'))
|
||||||
|
{
|
||||||
|
if (line.StartsWith("Generated 3D model file: "))
|
||||||
|
{
|
||||||
|
return line.Replace("Generated 3D model file: ", "").Trim();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new System.Exception("Failed to generate 3D model!");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<GameObject> SpawnModel(string modelPath)
|
||||||
|
{
|
||||||
|
var gltf = new GltfImport();
|
||||||
|
bool loadSuccess = await gltf.Load(modelPath);
|
||||||
|
if (loadSuccess)
|
||||||
|
{
|
||||||
|
string objectName = Path.GetFileName(modelPath);
|
||||||
|
GameObject spawningParent = new GameObject("Parent-" + objectName);
|
||||||
|
|
||||||
|
bool spawnSuccess = await gltf.InstantiateMainSceneAsync(spawningParent.transform);
|
||||||
|
if (spawnSuccess)
|
||||||
|
{
|
||||||
|
Transform spawnedObjectWorldTransform = spawningParent.transform.GetChild(0).transform;
|
||||||
|
GameObject spawnedObjectBody = spawnedObjectWorldTransform.GetChild(0).transform.gameObject;
|
||||||
|
MeshCollider collider = spawnedObjectBody.AddComponent<MeshCollider>();
|
||||||
|
collider.convex = true;
|
||||||
|
MeshRenderer renderer = spawnedObjectBody.GetComponent<MeshRenderer>();
|
||||||
|
renderer.material.SetFloat("metallicFactor", 0);
|
||||||
|
|
||||||
|
spawnedObjectBody.name = objectName;
|
||||||
|
return spawnedObjectBody;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new System.Exception("Failed to spawn GameObject from model" + modelPath);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 19e82e42c38cf2d4b912baa8d60c5407
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
118
Assets/_PROJECT/Scripts/ModeGeneration/VoiceTranscriptionBox.cs
Normal file
118
Assets/_PROJECT/Scripts/ModeGeneration/VoiceTranscriptionBox.cs
Normal file
@@ -0,0 +1,118 @@
|
|||||||
|
using System.Diagnostics;
|
||||||
|
using TMPro;
|
||||||
|
using Unity.XR.CoreUtils;
|
||||||
|
using UnityEngine;
|
||||||
|
using Whisper;
|
||||||
|
using Whisper.Utils;
|
||||||
|
|
||||||
|
public class VoiceTranscriptionBox : MonoBehaviour
|
||||||
|
{
|
||||||
|
public Material activeMaterial;
|
||||||
|
public Material inactiveMaterial;
|
||||||
|
public Material loadingMaterial;
|
||||||
|
|
||||||
|
private MeshRenderer meshRenderer;
|
||||||
|
private bool isLoading;
|
||||||
|
|
||||||
|
|
||||||
|
public WhisperManager whisper;
|
||||||
|
public MicrophoneRecord microphoneRecord;
|
||||||
|
public TextMeshProUGUI outputText;
|
||||||
|
|
||||||
|
private string _buffer;
|
||||||
|
|
||||||
|
private string lastTextOutput;
|
||||||
|
public string LastTextOutput
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return lastTextOutput;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Awake()
|
||||||
|
{
|
||||||
|
isLoading = false;
|
||||||
|
|
||||||
|
whisper.OnNewSegment += OnNewSegment;
|
||||||
|
whisper.OnProgress += OnProgressHandler;
|
||||||
|
|
||||||
|
microphoneRecord.OnRecordStop += OnRecordStop;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Start is called before the first frame update
|
||||||
|
void Start()
|
||||||
|
{
|
||||||
|
meshRenderer = GetComponent<MeshRenderer>();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update is called once per frame
|
||||||
|
void Update()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnTriggerEnter(Collider other)
|
||||||
|
{
|
||||||
|
if (isLoading)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
KbmController controller = other.GetComponent<KbmController>();
|
||||||
|
XROrigin playerOrigin = other.GetComponent<XROrigin>();
|
||||||
|
if (controller != null || playerOrigin != null)
|
||||||
|
{
|
||||||
|
meshRenderer.material = activeMaterial;
|
||||||
|
microphoneRecord.StartRecord();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnTriggerExit(Collider other)
|
||||||
|
{
|
||||||
|
KbmController controller = other.GetComponent<KbmController>();
|
||||||
|
XROrigin playerOrigin = other.GetComponent<XROrigin>();
|
||||||
|
if (controller != null | playerOrigin != null)
|
||||||
|
{
|
||||||
|
microphoneRecord.StopRecord();
|
||||||
|
meshRenderer.material = loadingMaterial;
|
||||||
|
isLoading = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private async void OnRecordStop(AudioChunk recordedAudio)
|
||||||
|
{
|
||||||
|
_buffer = "";
|
||||||
|
|
||||||
|
var sw = new Stopwatch();
|
||||||
|
sw.Start();
|
||||||
|
|
||||||
|
var res = await whisper.GetTextAsync(recordedAudio.Data, recordedAudio.Frequency, recordedAudio.Channels);
|
||||||
|
if (res == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
var time = sw.ElapsedMilliseconds;
|
||||||
|
var rate = recordedAudio.Length / (time * 0.001f);
|
||||||
|
UnityEngine.Debug.Log($"Time: {time} ms\nRate: {rate:F1}x");
|
||||||
|
|
||||||
|
var text = res.Result;
|
||||||
|
|
||||||
|
lastTextOutput = text;
|
||||||
|
outputText.text = text;
|
||||||
|
|
||||||
|
meshRenderer.material = inactiveMaterial;
|
||||||
|
isLoading = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnProgressHandler(int progress)
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.Log($"Progress: {progress}%");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnNewSegment(WhisperSegment segment)
|
||||||
|
{
|
||||||
|
_buffer += segment.Text;
|
||||||
|
UnityEngine.Debug.Log(_buffer + "...");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: d28857190597d9a46a8ddf3cf902cc81
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Doc/Readme-Footer.png
LFS
Normal file
BIN
Doc/Readme-Footer.png
LFS
Normal file
Binary file not shown.
BIN
Doc/Readme-Header.png
LFS
Normal file
BIN
Doc/Readme-Header.png
LFS
Normal file
Binary file not shown.
BIN
Doc/ReadmeIllustrations.afdesign
Normal file
BIN
Doc/ReadmeIllustrations.afdesign
Normal file
Binary file not shown.
BIN
Doc/clips/Bolt-Self-Driving-Car-Clip.gif
LFS
Normal file
BIN
Doc/clips/Bolt-Self-Driving-Car-Clip.gif
LFS
Normal file
Binary file not shown.
BIN
Doc/clips/Explore-Clip.gif
LFS
Normal file
BIN
Doc/clips/Explore-Clip.gif
LFS
Normal file
Binary file not shown.
BIN
Doc/clips/Interactive-Map-Clip.gif
LFS
Normal file
BIN
Doc/clips/Interactive-Map-Clip.gif
LFS
Normal file
Binary file not shown.
BIN
Doc/clips/Multiplayer-join-Clip.gif
LFS
Normal file
BIN
Doc/clips/Multiplayer-join-Clip.gif
LFS
Normal file
Binary file not shown.
BIN
Doc/clips/Old-menu.gif
LFS
Normal file
BIN
Doc/clips/Old-menu.gif
LFS
Normal file
Binary file not shown.
BIN
Doc/clips/Player-Collide-Offset-Clip.gif
LFS
Normal file
BIN
Doc/clips/Player-Collide-Offset-Clip.gif
LFS
Normal file
Binary file not shown.
BIN
Doc/clips/Player-Hand-No-Collision-Clip.gif
LFS
Normal file
BIN
Doc/clips/Player-Hand-No-Collision-Clip.gif
LFS
Normal file
Binary file not shown.
BIN
Doc/clips/Quit-Clip.gif
LFS
Normal file
BIN
Doc/clips/Quit-Clip.gif
LFS
Normal file
Binary file not shown.
BIN
Doc/clips/Server-Room-Clip.gif
LFS
Normal file
BIN
Doc/clips/Server-Room-Clip.gif
LFS
Normal file
Binary file not shown.
BIN
Doc/clips/Singleplayer-Join-Clip.gif
LFS
Normal file
BIN
Doc/clips/Singleplayer-Join-Clip.gif
LFS
Normal file
Binary file not shown.
BIN
Doc/clips/Skywalk-Clip.gif
LFS
Normal file
BIN
Doc/clips/Skywalk-Clip.gif
LFS
Normal file
Binary file not shown.
BIN
Doc/clips/UFO-Bow-Game-Clip.gif
LFS
Normal file
BIN
Doc/clips/UFO-Bow-Game-Clip.gif
LFS
Normal file
Binary file not shown.
BIN
Doc/clips/Whiteboard-Clip.gif
LFS
Normal file
BIN
Doc/clips/Whiteboard-Clip.gif
LFS
Normal file
Binary file not shown.
BIN
Doc/designs/Icons.afdesign
Normal file
BIN
Doc/designs/Icons.afdesign
Normal file
Binary file not shown.
BIN
Doc/designs/Map.afdesign
Normal file
BIN
Doc/designs/Map.afdesign
Normal file
Binary file not shown.
BIN
Doc/posters/MainPoster-2025.afdesign
Normal file
BIN
Doc/posters/MainPoster-2025.afdesign
Normal file
Binary file not shown.
BIN
Doc/posters/MainPoster-2025.pdf
Normal file
BIN
Doc/posters/MainPoster-2025.pdf
Normal file
Binary file not shown.
@@ -4,6 +4,7 @@
|
|||||||
"com.unity.2d.tilemap": "1.0.0",
|
"com.unity.2d.tilemap": "1.0.0",
|
||||||
"com.unity.ai.navigation": "1.1.1",
|
"com.unity.ai.navigation": "1.1.1",
|
||||||
"com.unity.cinemachine": "2.9.5",
|
"com.unity.cinemachine": "2.9.5",
|
||||||
|
"com.unity.cloud.gltfast": "6.14.1",
|
||||||
"com.unity.collab-proxy": "2.0.1",
|
"com.unity.collab-proxy": "2.0.1",
|
||||||
"com.unity.ext.nunit": "1.0.6",
|
"com.unity.ext.nunit": "1.0.6",
|
||||||
"com.unity.feature.vr": "1.0.0",
|
"com.unity.feature.vr": "1.0.0",
|
||||||
@@ -27,6 +28,7 @@
|
|||||||
"com.unity.xr.mock-hmd": "1.3.1-preview.1",
|
"com.unity.xr.mock-hmd": "1.3.1-preview.1",
|
||||||
"com.unity.xr.oculus": "3.2.3",
|
"com.unity.xr.oculus": "3.2.3",
|
||||||
"com.unity.xr.openxr": "1.7.0",
|
"com.unity.xr.openxr": "1.7.0",
|
||||||
|
"com.whisper.unity": "https://github.com/Macoron/whisper.unity.git?path=/Packages/com.whisper.unity",
|
||||||
"com.unity.modules.ai": "1.0.0",
|
"com.unity.modules.ai": "1.0.0",
|
||||||
"com.unity.modules.androidjni": "1.0.0",
|
"com.unity.modules.androidjni": "1.0.0",
|
||||||
"com.unity.modules.animation": "1.0.0",
|
"com.unity.modules.animation": "1.0.0",
|
||||||
|
|||||||
@@ -31,11 +31,12 @@
|
|||||||
"url": "https://packages.unity.com"
|
"url": "https://packages.unity.com"
|
||||||
},
|
},
|
||||||
"com.unity.burst": {
|
"com.unity.burst": {
|
||||||
"version": "1.8.3",
|
"version": "1.8.24",
|
||||||
"depth": 1,
|
"depth": 1,
|
||||||
"source": "registry",
|
"source": "registry",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"com.unity.mathematics": "1.2.1"
|
"com.unity.mathematics": "1.2.1",
|
||||||
|
"com.unity.modules.jsonserialize": "1.0.0"
|
||||||
},
|
},
|
||||||
"url": "https://packages.unity.com"
|
"url": "https://packages.unity.com"
|
||||||
},
|
},
|
||||||
@@ -48,6 +49,19 @@
|
|||||||
},
|
},
|
||||||
"url": "https://packages.unity.com"
|
"url": "https://packages.unity.com"
|
||||||
},
|
},
|
||||||
|
"com.unity.cloud.gltfast": {
|
||||||
|
"version": "6.14.1",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.burst": "1.8.24",
|
||||||
|
"com.unity.collections": "1.2.4",
|
||||||
|
"com.unity.mathematics": "1.2.6",
|
||||||
|
"com.unity.modules.jsonserialize": "1.0.0",
|
||||||
|
"com.unity.modules.unitywebrequest": "1.0.0"
|
||||||
|
},
|
||||||
|
"url": "https://packages.unity.com"
|
||||||
|
},
|
||||||
"com.unity.collab-proxy": {
|
"com.unity.collab-proxy": {
|
||||||
"version": "2.0.1",
|
"version": "2.0.1",
|
||||||
"depth": 0,
|
"depth": 0,
|
||||||
@@ -55,6 +69,16 @@
|
|||||||
"dependencies": {},
|
"dependencies": {},
|
||||||
"url": "https://packages.unity.com"
|
"url": "https://packages.unity.com"
|
||||||
},
|
},
|
||||||
|
"com.unity.collections": {
|
||||||
|
"version": "1.2.4",
|
||||||
|
"depth": 1,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.burst": "1.6.6",
|
||||||
|
"com.unity.test-framework": "1.1.31"
|
||||||
|
},
|
||||||
|
"url": "https://packages.unity.com"
|
||||||
|
},
|
||||||
"com.unity.editorcoroutines": {
|
"com.unity.editorcoroutines": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"depth": 1,
|
"depth": 1,
|
||||||
@@ -364,6 +388,13 @@
|
|||||||
},
|
},
|
||||||
"url": "https://packages.unity.com"
|
"url": "https://packages.unity.com"
|
||||||
},
|
},
|
||||||
|
"com.whisper.unity": {
|
||||||
|
"version": "https://github.com/Macoron/whisper.unity.git?path=/Packages/com.whisper.unity",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "git",
|
||||||
|
"dependencies": {},
|
||||||
|
"hash": "529a628a915a97799e89e061af9cb7c71407124d"
|
||||||
|
},
|
||||||
"com.unity.modules.ai": {
|
"com.unity.modules.ai": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"depth": 0,
|
"depth": 0,
|
||||||
|
|||||||
96
README.md
96
README.md
@@ -1,29 +1,95 @@
|
|||||||
# DeltaVR
|

|
||||||
|
|
||||||
DeltaVR is a virtual reality experience set in the Delta Centre of the University of Tartu. It was designed and implemented in a over three theses. The proiect used the Delta Building Visualization project as a basis for the building and built upon it, adding missing
|
DeltaVR is a virtual reality experience set in the [Delta Centre](https://delta.ut.ee/) of the [University of Tartu](https://ut.ee/). The virtual Delta Building includes several interactive scenes that demonstrate the teaching and research actively done in the Delta Centre.
|
||||||
details and improving the performance. DeltaVR has multiplayer support, which allows players to explore the building together in PCVR, Quest 2 and non-VR versions.
|
|
||||||
|
|
||||||
## Gameplay Sample Footage (DeltaVR 2021)
|
The application works on PCVR, Meta Quest 2 and 3, HTC Vive, and regular Windows PC platforms. There is cross-platform multiplayer functionality that enables several users to be in the same virtual environment from both VR and PC platforms.
|
||||||
|
|
||||||
https://youtu.be/AoRN4eluiWY
|
## Build
|
||||||
|
|
||||||
## History
|
Download the **[[latest build]](https://cgvrgit.ulno.net/cgvr/DeltaVR/src/branch/master/Build.zip)** (last updated 15.09.2025)
|
||||||
|
|
||||||
2023 version:
|
## Features
|
||||||
|
|
||||||
https://comserv.cs.ut.ee/ati_thesis/datasheet.php?id=77065&language=en
|
### Exploration
|
||||||
|
|
||||||
(See Extras for build)
|
DeltaVR features the first two floors of the Delta Educational Building for **exploration and discovery**. There are many diegetic elements representing the studies and research conducted at the Delta Building, such as robotics, the high-performance computing server room, video game development, and student life.
|
||||||
|
|
||||||
2022 version:
|

|
||||||
|
|
||||||
https://comserv.cs.ut.ee/ati_thesis/datasheet.php?id=74390
|
### UFO Bow Game
|
||||||
|
|
||||||
https://gitlab.com/Joonasp1/deltavr-multiplayer-builds
|
At the terrace on the second floor, Delta explorers can defend the building from UFO-s using a bow and **achieve high scores**.
|
||||||
|
|
||||||
2021 version:
|

|
||||||
|
|
||||||
https://comserv.cs.ut.ee/ati_thesis/datasheet.php?id=71682
|
### Bolt Self-Driving Car
|
||||||
|
|
||||||
https://drive.google.com/file/d/1n19_Wa69vCX6s6zKYoSYKirpHcfJHqaM/view?usp=sharing
|
The courtyard between the Educational and Entrepreneurial buildings of the Delta Centre, the explorers can see the Bolt Self-Driving Car. This car is developed by the [[http://adl.cs.ut.ee/|Autonomous Driving Lab]] of the [[https://cs.ut.ee|Institute of Computer Science]]. If one is brave enough, they can stop the car and catch a ride, simulating both the **feeling of being in a self-driving vehicle** as well as VR motion sickness.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### Space Walk
|
||||||
|
|
||||||
|
Where the actual Delta building has a set of skywalks connecting it with the entrepreneurship building, DeltaVR has a set of portals leading to the Space walk experience. In it, one can move in the **vastness of space** and experience **changes in gravity**. A fleet of UFO ships react to one's presence and come to investigate the arrival.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### Server Room
|
||||||
|
|
||||||
|
On the second floor, one can hear the humming of the servers. Should they investigate, they will find a room of server racks and a large red button. Should they push the button, they will trigger the **fire alarm** and have the server room fill with harmful invisible gas. This propms the player to escape the room. This largerly **auditory experience** is noted to be engaging and immersive. It represents the work of UT HPC in maintaining the servers of the University of Tartu.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### Interactive Map
|
||||||
|
|
||||||
|
To navigate the two floors of the large Delta Educational Building, explorers have an interactive map. This provides a clear overview of where they currently are and what other interactions are located across the building. Explorers can teleport to a **select interactive experiences**, while others are left for them to discover based on the hints on the map.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### Whiteboard
|
||||||
|
|
||||||
|
In the virtual Computer Graphics and Virtual Reality Study Lab, explorers can use spray paint cans to draw on a whiteboard. Surprisingly, this is one of the **more popular interactive experiences** of DeltaVR.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Credits
|
||||||
|
|
||||||
|
**Ranno Samuel Adson**<br/>
|
||||||
|
User experience design. Additional interactions. Interaction improvements.
|
||||||
|
|
||||||
|
**Toomas Tamm**<br/>
|
||||||
|
Project architecture, model optimization, lighting. [Bachelor's Thesis](https://comserv.cs.ut.ee/ati_thesis/datasheet.php?id=71682) ([poster](https://courses.cs.ut.ee/student_projects/download/478.pdf)), [Master's Thesis](https://comserv.cs.ut.ee/ati_thesis/datasheet.php?id=77065&language=en).
|
||||||
|
|
||||||
|
**Joonas Püks**<br/>
|
||||||
|
Multiplayer and cross-play functionality. [Bachelor's Thesis](https://comserv.cs.ut.ee/ati_thesis/datasheet.php?id=74390) ([poster](https://courses.cs.ut.ee/student_projects/download/534.pdf)).
|
||||||
|
|
||||||
|
**Raimond Tunnel**<br/>
|
||||||
|
Project management, visual design.
|
||||||
|
|
||||||
|
Developed in the [Computer Graphcis and Virtual Reality Study Lab](https://cgvr.cs.ut.ee/) of the [Institute of Computer Science, University of Tartu](https://cs.ut.ee).
|
||||||
|
|
||||||
|
### Used Attributions
|
||||||
|
|
||||||
|
| Description | License | Source | Author |
|
||||||
|
|-----------------------------------------------------|----------------------------------------------|---------------------------------------------------------------------------------------------|------------------|
|
||||||
|
| Bold's car driving sound | Attribution NonCommercial 3.0 | [Link](https://freesound.org/people/Pfujimoto/sounds/14371/) | Pfujimoto |
|
||||||
|
| Bold's car braking sound | Attribution 3.0 | [Link](https://freesound.org/people/200154michaela/sounds/542448/) | 200154michaela |
|
||||||
|
| Bold's car horn sound | Attribution 4.0 | [Link](https://freesound.org/people/ceberation/sounds/235506/) | ceberation |
|
||||||
|
| Server rack model | Royalty Free, No AI License | [Link](https://www.cgtrader.com/free-3d-models/electronics/computer/simple-server-model) | anymelok |
|
||||||
|
| Server rack humming sound | Attribution 4.0 | [Link](https://freesound.org/people/jameswrowles/sounds/248217/) | jameswrowles |
|
||||||
|
| Fire suppression button press sound | Creative Commons 0 | [Link](https://freesound.org/people/LamaMakesMusic/sounds/403556/) | LamaMakesMusic |
|
||||||
|
| Fire suppression alarm sound | Attribution 3.0 | [Link](https://freesound.org/people/jobro/sounds/33737/) | jobro |
|
||||||
|
| Fire-suppressing gas release sound | Creative Commons 0 | [Link](https://freesound.org/people/mrmccormack/sounds/182359/) | mrmccormack |
|
||||||
|
| Coughing sound in response to fire-suppressing gas | Attribution 4.0 | [Link](https://freesound.org/people/qubodup/sounds/739416/) | qubodup |
|
||||||
|
| Robot movement sound | Creative Commons 0 | [Link](https://freesound.org/people/Brazilio123/sounds/661435/) | Brazilio123 |
|
||||||
|
| Portal humming sound | Attribution 4.0 | [Link](https://freesound.org/people/zimbot/sounds/122972/) | zimbot |
|
||||||
|
| Spacewalk UFO sound | Attribution NonCommercial 4.0 | [Link](https://freesound.org/people/Speedenza/sounds/209366/) | Speedenza |
|
||||||
|
| Keyboard icons | Creative Commons Attribution-NoDerivs 3.0 | [Link](https://icons8.com/) | icons8 |
|
||||||
|
|
||||||
|
-----
|
||||||
|
|
||||||
|
DeltaVR was moved to this repository in 2025. The previous repository is available here: [[https://gitlab.com/UT-CGVR/deltavr]]
|
||||||
|
|
||||||
|
-----
|
||||||
|
|
||||||
|

|
||||||
|
|||||||
Reference in New Issue
Block a user