Compare commits
42 Commits
CG-Expo
...
b424c6467b
| Author | SHA1 | Date | |
|---|---|---|---|
| b424c6467b | |||
| 409b9fbb51 | |||
| 2c19602e9b | |||
| 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 |
5
3d-generation-pipeline/.env.example
Normal file
5
3d-generation-pipeline/.env.example
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
INVOKEAI_URL=
|
||||||
|
TRELLIS_URL=
|
||||||
|
|
||||||
|
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"]
|
||||||
489
3d-generation-pipeline/generate_image_local.py
Normal file
489
3d-generation-pipeline/generate_image_local.py
Normal file
@@ -0,0 +1,489 @@
|
|||||||
|
# Based on: https://github.com/coinstax/invokeai-mcp-server
|
||||||
|
|
||||||
|
import requests
|
||||||
|
import asyncio
|
||||||
|
import json
|
||||||
|
import logging
|
||||||
|
import httpx
|
||||||
|
import os
|
||||||
|
|
||||||
|
from typing import Optional
|
||||||
|
from urllib.parse import urljoin
|
||||||
|
from dotenv import load_dotenv
|
||||||
|
|
||||||
|
# Configure logging
|
||||||
|
logging.basicConfig(level=logging.INFO)
|
||||||
|
logger = logging.getLogger("invokeai-mcp")
|
||||||
|
|
||||||
|
load_dotenv()
|
||||||
|
|
||||||
|
INVOKEAI_BASE_URL = os.environ["INVOKEAI_URL"]
|
||||||
|
DEFAULT_QUEUE_ID = "default"
|
||||||
|
|
||||||
|
# HTTP client
|
||||||
|
http_client: Optional[httpx.AsyncClient] = None
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def get_client() -> httpx.AsyncClient:
|
||||||
|
"""Get or create HTTP client."""
|
||||||
|
global http_client
|
||||||
|
if http_client is None:
|
||||||
|
http_client = httpx.AsyncClient(base_url=INVOKEAI_BASE_URL, timeout=120.0)
|
||||||
|
return http_client
|
||||||
|
|
||||||
|
|
||||||
|
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)
|
||||||
|
|
||||||
|
async def wait_for_completion(batch_id: str, queue_id: str = DEFAULT_QUEUE_ID, timeout: int = 300) -> dict:
|
||||||
|
"""Wait for a batch to complete and return the most recent image."""
|
||||||
|
client = get_client()
|
||||||
|
start_time = asyncio.get_event_loop().time()
|
||||||
|
|
||||||
|
while True:
|
||||||
|
# Check if we've exceeded timeout
|
||||||
|
if asyncio.get_event_loop().time() - start_time > timeout:
|
||||||
|
raise TimeoutError(f"Image generation timed out after {timeout} seconds")
|
||||||
|
|
||||||
|
# Get batch status
|
||||||
|
response = await client.get(f"/api/v1/queue/{queue_id}/b/{batch_id}/status")
|
||||||
|
response.raise_for_status()
|
||||||
|
status_data = response.json()
|
||||||
|
|
||||||
|
# Check for failures
|
||||||
|
failed_count = status_data.get("failed", 0)
|
||||||
|
if failed_count > 0:
|
||||||
|
# Try to get error details from the queue
|
||||||
|
queue_status_response = await client.get(f"/api/v1/queue/{queue_id}/status")
|
||||||
|
queue_status_response.raise_for_status()
|
||||||
|
queue_data = queue_status_response.json()
|
||||||
|
|
||||||
|
raise RuntimeError(
|
||||||
|
f"Image generation failed. Batch {batch_id} has {failed_count} failed item(s). "
|
||||||
|
f"Queue status: {json.dumps(queue_data, indent=2)}"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Check completion
|
||||||
|
completed = status_data.get("completed", 0)
|
||||||
|
total = status_data.get("total", 0)
|
||||||
|
|
||||||
|
if completed == total and total > 0:
|
||||||
|
# Get most recent non-intermediate image
|
||||||
|
images_response = await client.get("/api/v1/images/?is_intermediate=false&limit=10")
|
||||||
|
images_response.raise_for_status()
|
||||||
|
images_data = images_response.json()
|
||||||
|
|
||||||
|
# Return the most recent image (first in the list)
|
||||||
|
if images_data.get("items"):
|
||||||
|
return {
|
||||||
|
"batch_id": batch_id,
|
||||||
|
"status": "completed",
|
||||||
|
"result": {
|
||||||
|
"outputs": {
|
||||||
|
"save_image": {
|
||||||
|
"type": "image_output",
|
||||||
|
"image": {
|
||||||
|
"image_name": images_data["items"][0]["image_name"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# If no images found, return status
|
||||||
|
return status_data
|
||||||
|
|
||||||
|
# Wait before checking again
|
||||||
|
await asyncio.sleep(1)
|
||||||
|
|
||||||
|
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 get_image_url(image_name: str) -> str:
|
||||||
|
"""Get the URL for an image."""
|
||||||
|
client = get_client()
|
||||||
|
response = await client.get(f"/api/v1/images/i/{image_name}/urls")
|
||||||
|
response.raise_for_status()
|
||||||
|
data = response.json()
|
||||||
|
return data.get("image_url", "")
|
||||||
|
|
||||||
|
|
||||||
|
async def enqueue_graph(graph: dict, queue_id: str = DEFAULT_QUEUE_ID) -> dict:
|
||||||
|
"""Enqueue a graph for processing."""
|
||||||
|
client = get_client()
|
||||||
|
|
||||||
|
batch = {
|
||||||
|
"batch": {
|
||||||
|
"graph": graph,
|
||||||
|
"runs": 1,
|
||||||
|
"data": None
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
response = await client.post(
|
||||||
|
f"/api/v1/queue/{queue_id}/enqueue_batch",
|
||||||
|
json=batch
|
||||||
|
)
|
||||||
|
response.raise_for_status()
|
||||||
|
return response.json()
|
||||||
|
|
||||||
|
async def list_models(model_type: str = "main") -> list:
|
||||||
|
"""List available models."""
|
||||||
|
client = get_client()
|
||||||
|
response = await client.get("/api/v2/models/", params={"model_type": model_type})
|
||||||
|
response.raise_for_status()
|
||||||
|
data = response.json()
|
||||||
|
return data.get("models", [])
|
||||||
|
|
||||||
|
async def get_model_info(model_key: str) -> Optional[dict]:
|
||||||
|
"""Get information about a specific model."""
|
||||||
|
client = get_client()
|
||||||
|
try:
|
||||||
|
response = await client.get(f"/api/v2/models/i/{model_key}")
|
||||||
|
response.raise_for_status()
|
||||||
|
model_data = response.json()
|
||||||
|
|
||||||
|
# Ensure we have a valid dictionary
|
||||||
|
if not isinstance(model_data, dict):
|
||||||
|
logger.error(f"Model info for {model_key} is not a dictionary: {type(model_data)}")
|
||||||
|
return None
|
||||||
|
|
||||||
|
return model_data
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"Error fetching model info for {model_key}: {e}")
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
async def create_text2img_graph(
|
||||||
|
prompt: str,
|
||||||
|
negative_prompt: str = "",
|
||||||
|
model_key: Optional[str] = None,
|
||||||
|
lora_key: Optional[str] = None,
|
||||||
|
lora_weight: float = 1.0,
|
||||||
|
vae_key: Optional[str] = None,
|
||||||
|
width: int = 512,
|
||||||
|
height: int = 512,
|
||||||
|
steps: int = 30,
|
||||||
|
cfg_scale: float = 7.5,
|
||||||
|
scheduler: str = "euler",
|
||||||
|
seed: Optional[int] = None
|
||||||
|
) -> dict:
|
||||||
|
"""Create a text-to-image generation graph with optional LoRA and VAE support."""
|
||||||
|
|
||||||
|
# Use default model if not specified
|
||||||
|
if model_key is None:
|
||||||
|
# Try to find an sd-1 model
|
||||||
|
models = await list_models("main")
|
||||||
|
for model in models:
|
||||||
|
if model.get("base") == "sd-1":
|
||||||
|
model_key = model["key"]
|
||||||
|
break
|
||||||
|
if model_key is None:
|
||||||
|
raise ValueError("No suitable model found")
|
||||||
|
|
||||||
|
# Get model information
|
||||||
|
model_info = await get_model_info(model_key)
|
||||||
|
if not model_info:
|
||||||
|
raise ValueError(f"Model {model_key} not found")
|
||||||
|
|
||||||
|
# Validate model info has required fields
|
||||||
|
if not isinstance(model_info, dict):
|
||||||
|
raise ValueError(f"Model {model_key} returned invalid data type: {type(model_info)}")
|
||||||
|
|
||||||
|
required_fields = ["key", "hash", "name", "base", "type"]
|
||||||
|
for field in required_fields:
|
||||||
|
if field not in model_info or model_info[field] is None:
|
||||||
|
raise ValueError(f"Model {model_key} is missing required field: {field}")
|
||||||
|
|
||||||
|
# Generate random seed if not provided
|
||||||
|
if seed is None:
|
||||||
|
import random
|
||||||
|
seed = random.randint(0, 2**32 - 1)
|
||||||
|
|
||||||
|
# Detect if this is an SDXL model
|
||||||
|
is_sdxl = model_info["base"] == "sdxl"
|
||||||
|
|
||||||
|
# Build nodes dictionary
|
||||||
|
nodes = {
|
||||||
|
# Main model loader - use sdxl_model_loader for SDXL models
|
||||||
|
"model_loader": {
|
||||||
|
"type": "sdxl_model_loader" if is_sdxl else "main_model_loader",
|
||||||
|
"id": "model_loader",
|
||||||
|
"model": {
|
||||||
|
"key": model_info["key"],
|
||||||
|
"hash": model_info["hash"],
|
||||||
|
"name": model_info["name"],
|
||||||
|
"base": model_info["base"],
|
||||||
|
"type": model_info["type"]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
# Positive prompt encoding - use sdxl_compel_prompt for SDXL
|
||||||
|
"positive_prompt": {
|
||||||
|
"type": "sdxl_compel_prompt" if is_sdxl else "compel",
|
||||||
|
"id": "positive_prompt",
|
||||||
|
"prompt": prompt,
|
||||||
|
**({"style": prompt} if is_sdxl else {})
|
||||||
|
},
|
||||||
|
|
||||||
|
# Negative prompt encoding - use sdxl_compel_prompt for SDXL
|
||||||
|
"negative_prompt": {
|
||||||
|
"type": "sdxl_compel_prompt" if is_sdxl else "compel",
|
||||||
|
"id": "negative_prompt",
|
||||||
|
"prompt": negative_prompt,
|
||||||
|
**({"style": ""} if is_sdxl else {})
|
||||||
|
},
|
||||||
|
|
||||||
|
# Noise generation
|
||||||
|
"noise": {
|
||||||
|
"type": "noise",
|
||||||
|
"id": "noise",
|
||||||
|
"seed": seed,
|
||||||
|
"width": width,
|
||||||
|
"height": height,
|
||||||
|
"use_cpu": False
|
||||||
|
},
|
||||||
|
|
||||||
|
# Denoise latents (main generation step)
|
||||||
|
"denoise": {
|
||||||
|
"type": "denoise_latents",
|
||||||
|
"id": "denoise",
|
||||||
|
"steps": steps,
|
||||||
|
"cfg_scale": cfg_scale,
|
||||||
|
"scheduler": scheduler,
|
||||||
|
"denoising_start": 0,
|
||||||
|
"denoising_end": 1
|
||||||
|
},
|
||||||
|
|
||||||
|
# Convert latents to image
|
||||||
|
"latents_to_image": {
|
||||||
|
"type": "l2i",
|
||||||
|
"id": "latents_to_image"
|
||||||
|
},
|
||||||
|
|
||||||
|
# Save image
|
||||||
|
"save_image": {
|
||||||
|
"type": "save_image",
|
||||||
|
"id": "save_image",
|
||||||
|
"is_intermediate": False
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Add LoRA loader if requested
|
||||||
|
if lora_key is not None:
|
||||||
|
lora_info = await get_model_info(lora_key)
|
||||||
|
if not lora_info:
|
||||||
|
raise ValueError(f"LoRA model {lora_key} not found")
|
||||||
|
|
||||||
|
# Validate LoRA info has required fields
|
||||||
|
required_fields = ["key", "hash", "name", "base", "type"]
|
||||||
|
for field in required_fields:
|
||||||
|
if field not in lora_info or lora_info[field] is None:
|
||||||
|
raise ValueError(f"LoRA model {lora_key} is missing required field: {field}")
|
||||||
|
|
||||||
|
nodes["lora_loader"] = {
|
||||||
|
"type": "lora_loader",
|
||||||
|
"id": "lora_loader",
|
||||||
|
"lora": {
|
||||||
|
"key": lora_info["key"],
|
||||||
|
"hash": lora_info["hash"],
|
||||||
|
"name": lora_info["name"],
|
||||||
|
"base": lora_info["base"],
|
||||||
|
"type": lora_info["type"]
|
||||||
|
},
|
||||||
|
"weight": lora_weight
|
||||||
|
}
|
||||||
|
|
||||||
|
# Add VAE loader if requested (to override model's built-in VAE)
|
||||||
|
if vae_key is not None:
|
||||||
|
vae_info = await get_model_info(vae_key)
|
||||||
|
if not vae_info:
|
||||||
|
raise ValueError(f"VAE model {vae_key} not found")
|
||||||
|
|
||||||
|
# Validate VAE info has required fields
|
||||||
|
required_fields = ["key", "hash", "name", "base", "type"]
|
||||||
|
for field in required_fields:
|
||||||
|
if field not in vae_info or vae_info[field] is None:
|
||||||
|
raise ValueError(f"VAE model {vae_key} is missing required field: {field}")
|
||||||
|
|
||||||
|
nodes["vae_loader"] = {
|
||||||
|
"type": "vae_loader",
|
||||||
|
"id": "vae_loader",
|
||||||
|
"vae_model": {
|
||||||
|
"key": vae_info["key"],
|
||||||
|
"hash": vae_info["hash"],
|
||||||
|
"name": vae_info["name"],
|
||||||
|
"base": vae_info["base"],
|
||||||
|
"type": vae_info["type"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Build edges
|
||||||
|
edges = []
|
||||||
|
|
||||||
|
# Determine source for UNet and CLIP (model_loader or lora_loader)
|
||||||
|
unet_source = "lora_loader" if lora_key is not None else "model_loader"
|
||||||
|
clip_source = "lora_loader" if lora_key is not None else "model_loader"
|
||||||
|
# Determine source for VAE (vae_loader if specified, otherwise model_loader)
|
||||||
|
vae_source = "vae_loader" if vae_key is not None else "model_loader"
|
||||||
|
|
||||||
|
# If using LoRA, connect model_loader to lora_loader first
|
||||||
|
if lora_key is not None:
|
||||||
|
edges.extend([
|
||||||
|
{
|
||||||
|
"source": {"node_id": "model_loader", "field": "unet"},
|
||||||
|
"destination": {"node_id": "lora_loader", "field": "unet"}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"source": {"node_id": "model_loader", "field": "clip"},
|
||||||
|
"destination": {"node_id": "lora_loader", "field": "clip"}
|
||||||
|
}
|
||||||
|
])
|
||||||
|
# Note: lora_loader doesn't have a clip2 field, so for SDXL we route clip2 directly from model_loader
|
||||||
|
|
||||||
|
# Connect UNet and CLIP to downstream nodes
|
||||||
|
edges.extend([
|
||||||
|
# Connect UNet to denoise
|
||||||
|
{
|
||||||
|
"source": {"node_id": unet_source, "field": "unet"},
|
||||||
|
"destination": {"node_id": "denoise", "field": "unet"}
|
||||||
|
},
|
||||||
|
# Connect CLIP to prompts
|
||||||
|
{
|
||||||
|
"source": {"node_id": clip_source, "field": "clip"},
|
||||||
|
"destination": {"node_id": "positive_prompt", "field": "clip"}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"source": {"node_id": clip_source, "field": "clip"},
|
||||||
|
"destination": {"node_id": "negative_prompt", "field": "clip"}
|
||||||
|
},
|
||||||
|
])
|
||||||
|
|
||||||
|
# For SDXL models, also connect clip2
|
||||||
|
# Note: clip2 always comes from model_loader, even when using LoRA (lora_loader doesn't support clip2)
|
||||||
|
if is_sdxl:
|
||||||
|
edges.extend([
|
||||||
|
{
|
||||||
|
"source": {"node_id": "model_loader", "field": "clip2"},
|
||||||
|
"destination": {"node_id": "positive_prompt", "field": "clip2"}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"source": {"node_id": "model_loader", "field": "clip2"},
|
||||||
|
"destination": {"node_id": "negative_prompt", "field": "clip2"}
|
||||||
|
},
|
||||||
|
])
|
||||||
|
|
||||||
|
edges.extend([
|
||||||
|
|
||||||
|
# Connect prompts to denoise
|
||||||
|
{
|
||||||
|
"source": {"node_id": "positive_prompt", "field": "conditioning"},
|
||||||
|
"destination": {"node_id": "denoise", "field": "positive_conditioning"}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"source": {"node_id": "negative_prompt", "field": "conditioning"},
|
||||||
|
"destination": {"node_id": "denoise", "field": "negative_conditioning"}
|
||||||
|
},
|
||||||
|
|
||||||
|
# Connect noise to denoise
|
||||||
|
{
|
||||||
|
"source": {"node_id": "noise", "field": "noise"},
|
||||||
|
"destination": {"node_id": "denoise", "field": "noise"}
|
||||||
|
},
|
||||||
|
|
||||||
|
# Connect denoise to latents_to_image
|
||||||
|
{
|
||||||
|
"source": {"node_id": "denoise", "field": "latents"},
|
||||||
|
"destination": {"node_id": "latents_to_image", "field": "latents"}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"source": {"node_id": vae_source, "field": "vae"},
|
||||||
|
"destination": {"node_id": "latents_to_image", "field": "vae"}
|
||||||
|
},
|
||||||
|
|
||||||
|
# Connect latents_to_image to save_image
|
||||||
|
{
|
||||||
|
"source": {"node_id": "latents_to_image", "field": "image"},
|
||||||
|
"destination": {"node_id": "save_image", "field": "image"}
|
||||||
|
}
|
||||||
|
])
|
||||||
|
|
||||||
|
graph = {
|
||||||
|
"id": "text2img_graph",
|
||||||
|
"nodes": nodes,
|
||||||
|
"edges": edges
|
||||||
|
}
|
||||||
|
|
||||||
|
return graph
|
||||||
74
3d-generation-pipeline/generate_model_local.py
Normal file
74
3d-generation-pipeline/generate_model_local.py
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
import os
|
||||||
|
import time
|
||||||
|
import requests
|
||||||
|
import base64
|
||||||
|
|
||||||
|
from dotenv import load_dotenv
|
||||||
|
|
||||||
|
load_dotenv()
|
||||||
|
API_URL = os.environ["TRELLIS_URL"]
|
||||||
|
|
||||||
|
|
||||||
|
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_trellis(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_trellis
|
||||||
|
|
||||||
|
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_trellis(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()
|
||||||
{
|
{
|
||||||
@@ -148,7 +179,7 @@ public class ArcheryRange : NetworkBehaviour
|
|||||||
_targets = new List<ArcheryTarget>();
|
_targets = new List<ArcheryTarget>();
|
||||||
if (_maxScore < _score) _maxScore = _score;
|
if (_maxScore < _score) _maxScore = _score;
|
||||||
|
|
||||||
if(_presentPlayers.Count != 0) // If there are players in the area.
|
if (_presentPlayers.Count != 0) // If there are players in the area.
|
||||||
{
|
{
|
||||||
// Gives the score to the player longest-lasting in the area. It would be better to give it to the player that fired the starting arrow, but I'm not spending 10 hours on this.
|
// Gives the score to the player longest-lasting in the area. It would be better to give it to the player that fired the starting arrow, but I'm not spending 10 hours on this.
|
||||||
|
|
||||||
@@ -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
|
||||||
{
|
{
|
||||||
@@ -13,12 +10,10 @@ public class ArcheryTarget : NetworkBehaviour, IArrowHittable
|
|||||||
public Vector3 endPosition;
|
public Vector3 endPosition;
|
||||||
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)
|
||||||
|
|||||||
@@ -1,7 +1,4 @@
|
|||||||
using System.Collections;
|
using _PROJECT.Multiplayer.NewBow;
|
||||||
using _PROJECT.Multiplayer.NewBow;
|
|
||||||
using _PROJECT.Scripts.Bow;
|
|
||||||
using FishNet.Object;
|
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.XR.Interaction.Toolkit;
|
using UnityEngine.XR.Interaction.Toolkit;
|
||||||
|
|
||||||
|
|||||||
@@ -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: ModelGenerationBox
|
||||||
|
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:
|
||||||
112
Assets/_PROJECT/Scripts/ModeGeneration/VoiceTranscriptionBox.cs
Normal file
112
Assets/_PROJECT/Scripts/ModeGeneration/VoiceTranscriptionBox.cs
Normal file
@@ -0,0 +1,112 @@
|
|||||||
|
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;
|
||||||
|
|
||||||
|
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 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:
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Doc/clips/Door-Grabbing-Clip.gif
LFS
BIN
Doc/clips/Door-Grabbing-Clip.gif
LFS
Binary file not shown.
BIN
Doc/clips/Doors-Issue-Clip.gif
LFS
BIN
Doc/clips/Doors-Issue-Clip.gif
LFS
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Doc/clips/Ghost-Hand-Clip.gif
LFS
BIN
Doc/clips/Ghost-Hand-Clip.gif
LFS
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Doc/designs/Old-VR-Doorknob.png
LFS
BIN
Doc/designs/Old-VR-Doorknob.png
LFS
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Doc/designs/Real-Doorknob.jpg
LFS
BIN
Doc/designs/Real-Doorknob.jpg
LFS
Binary file not shown.
BIN
Doc/designs/Two-Elevators.png
LFS
BIN
Doc/designs/Two-Elevators.png
LFS
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,
|
||||||
|
|||||||
Binary file not shown.
12
README.md
12
README.md
@@ -66,17 +66,23 @@ Multiplayer and cross-play functionality. [Bachelor's Thesis](https://comserv.cs
|
|||||||
**Raimond Tunnel**<br/>
|
**Raimond Tunnel**<br/>
|
||||||
Project management, visual design.
|
Project management, visual design.
|
||||||
|
|
||||||
**Timur Nizamov**<br/>
|
|
||||||
Technical sound 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).
|
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
|
### Used Attributions
|
||||||
|
|
||||||
| Description | License | Source | Author |
|
| 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 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 |
|
| 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 |
|
| 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 |
|
| Keyboard icons | Creative Commons Attribution-NoDerivs 3.0 | [Link](https://icons8.com/) | icons8 |
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user