from github pull code

This commit is contained in:
xiaoma
2026-02-06 20:17:01 +08:00
51 changed files with 1026912 additions and 33 deletions

6
backend/.dockerignore Normal file
View File

@@ -0,0 +1,6 @@
venv
__pycache__
*.pyc
.git
.env
db.sqlite3

View File

@@ -8,12 +8,6 @@ ENV PYTHONUNBUFFERED=1
# Set work directory
WORKDIR /app
# Install system dependencies (needed for psycopg2 and others)
RUN apt-get update && apt-get install -y \
gcc \
libpq-dev \
&& rm -rf /var/lib/apt/lists/*
# Install python dependencies
COPY requirements.txt /app/
RUN pip install --upgrade pip && pip install -r requirements.txt

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.

View File

@@ -82,17 +82,26 @@ WSGI_APPLICATION = 'config.wsgi.application'
# Database
# https://docs.djangoproject.com/en/6.0/ref/settings/#databases
# 优先使用 SQLite 进行本地开发,如果需要 PostgreSQL 请自行配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'market',
'USER': 'market',
'PASSWORD': '123market',
'HOST': '6.6.6.66',
'PORT': '5432',
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
# 如果您坚持要使用 PostgreSQL请取消下面的注释并确保本地已启动 Postgres 服务
# DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.postgresql',
# 'NAME': 'market',
# 'USER': 'market',
# 'PASSWORD': '123market',
# 'HOST': 'localhost',
# 'PORT': '5432',
# }
# }
# Password validation
# https://docs.djangoproject.com/en/6.0/ref/settings/#auth-password-validators

BIN
backend/db.sqlite3 Normal file

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.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,6 +1,6 @@
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from .views import ESP32ConfigViewSet, OrderViewSet, order_check_view, ServiceViewSet, ARServiceViewSet, ServiceOrderViewSet
from .views import ESP32ConfigViewSet, OrderViewSet, order_check_view, ServiceViewSet, ARServiceViewSet, ServiceOrderViewSet, payment_finish
router = DefaultRouter()
router.register(r'configs', ESP32ConfigViewSet)
@@ -11,5 +11,6 @@ router.register(r'service-orders', ServiceOrderViewSet)
urlpatterns = [
path('', include(router.urls)),
path('finish/', payment_finish, name='payment-finish'),
path('page/check-order/', order_check_view, name='check-order-page'),
]

View File

@@ -2,9 +2,77 @@ from rest_framework import viewsets, status
from rest_framework.decorators import action
from rest_framework.response import Response
from django.shortcuts import render
from django.views.decorators.csrf import csrf_exempt
from django.http import HttpResponse
from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiParameter, OpenApiExample
from .models import ESP32Config, Order, WeChatPayConfig, Service, ARService, ServiceOrder
from .serializers import ESP32ConfigSerializer, OrderSerializer, ServiceSerializer, ARServiceSerializer, ServiceOrderSerializer
import xml.etree.ElementTree as ET
import uuid
import time
import hashlib
@csrf_exempt
def payment_finish(request):
"""
微信支付回调接口
URL: /api/finish/
"""
if request.method != 'POST':
return HttpResponse("Method not allowed", status=405)
try:
# 解析微信发送的 XML
xml_data = request.body
if not xml_data:
return HttpResponse("Empty body", status=400)
root = ET.fromstring(xml_data)
# 将 XML 转为字典
data = {child.tag: child.text for child in root}
# 检查支付结果
# WeChat Pay V2 回调参数中 return_code 为通信标识result_code 为业务结果
if data.get('return_code') == 'SUCCESS' and data.get('result_code') == 'SUCCESS':
# out_trade_no 是我们在统一下单时传给微信的订单号
order_id = data.get('out_trade_no')
transaction_id = data.get('transaction_id') # 微信支付订单号
# 找到订单并更新状态
try:
# 兼容处理:如果是字符串 ID尝试转换
order = Order.objects.get(id=order_id)
if order.status != 'paid':
order.status = 'paid'
order.wechat_trade_no = transaction_id
order.save()
print(f"Order {order_id} marked as paid via callback.")
except Order.DoesNotExist:
print(f"Order {order_id} not found in callback.")
except Exception as e:
print(f"Error processing order {order_id} in callback: {e}")
# 返回成功响应给微信,否则微信会不断重试通知
success_response = """
<xml>
<return_code><![CDATA[SUCCESS]]></return_code>
<return_msg><![CDATA[OK]]></return_msg>
</xml>
"""
return HttpResponse(success_response, content_type='application/xml')
except ET.ParseError:
return HttpResponse("Invalid XML", status=400)
except Exception as e:
print(f"Payment callback error: {e}")
error_response = f"""
<xml>
<return_code><![CDATA[FAIL]]></return_code>
<return_msg><![CDATA[{str(e)}]]></return_msg>
</xml>
"""
return HttpResponse(error_response, content_type='application/xml')
@extend_schema_view(
list=extend_schema(summary="获取AR服务列表", description="获取所有可用的AR服务"),
@@ -16,9 +84,6 @@ class ARServiceViewSet(viewsets.ReadOnlyModelViewSet):
"""
queryset = ARService.objects.all().order_by('-created_at')
serializer_class = ARServiceSerializer
import uuid
import time
import hashlib
def order_check_view(request):
"""

View File

@@ -1,15 +1,4 @@
services:
db:
image: postgres:15
volumes:
- postgres_data:/var/lib/postgresql/data
environment:
- POSTGRES_DB=market
- POSTGRES_USER=market
- POSTGRES_PASSWORD=123market
ports:
- "5432:5432"
backend:
build: ./backend
command: sh -c "python manage.py migrate && python manage.py runserver 0.0.0.0:8000"
@@ -17,13 +6,11 @@ services:
- ./backend:/app
ports:
- "8000:8000"
depends_on:
- db
environment:
- DB_NAME=market
- DB_USER=market
- DB_PASSWORD=123market
- DB_HOST=db
- DB_HOST=6.6.6.66
- DB_PORT=5432
frontend:
@@ -37,6 +24,3 @@ services:
- VITE_API_URL=http://localhost:8000/api
depends_on:
- backend
volumes:
postgres_data:

4
frontend/.dockerignore Normal file
View File

@@ -0,0 +1,4 @@
node_modules
dist
.git
.env

4971
frontend/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,253 @@
# Designed by EasyEDA Pro
newmtl mtl1
Ka 0.25 0.25 0.25
Kd 0.25 0.25 0.25
Ks 0.13 0.13 0.13
d 1.00
endmtl
newmtl mtl2
Ka 0.75 0.75 0.75
Kd 0.75 0.75 0.75
Ks 0.38 0.38 0.38
d 1.00
endmtl
newmtl mtl3
Ka 1.00 1.00 1.00
Kd 1.00 1.00 1.00
Ks 0.50 0.50 0.50
d 1.00
endmtl
newmtl mtl4
Ka 0.54 0.35 0.34
Kd 0.54 0.35 0.34
Ks 0.38 0.24 0.24
d 1.00
endmtl
newmtl mtl5
Ka 0.43 0.35 0.37
Kd 0.43 0.35 0.37
Ks 0.30 0.25 0.26
d 1.00
endmtl
newmtl mtl6
Ka 1.00 1.00 1.00
Kd 1.00 1.00 1.00
Ks 0.30 0.30 0.30
d 1.00
endmtl
newmtl mtl7
Ka 0.11 0.11 0.11
Kd 0.11 0.11 0.11
Ks 0.08 0.08 0.08
d 1.00
endmtl
newmtl mtl8
Ka 1.00 1.00 1.00
Kd 1.00 1.00 1.00
Ks 0.88 0.88 0.88
d 1.00
endmtl
newmtl mtl9
Ka 0.78 0.76 0.74
Kd 0.78 0.76 0.74
Ks 0.39 0.38 0.37
d 1.00
endmtl
newmtl mtl10
Ka 0.59 0.46 0.00
Kd 0.59 0.46 0.00
Ks 0.29 0.23 0.00
d 1.00
endmtl
newmtl mtl11
Ka 0.85 0.85 0.85
Kd 0.85 0.85 0.85
Ks 0.43 0.43 0.43
d 1.00
endmtl
newmtl mtl12
Ka 0.75 0.75 0.00
Kd 0.75 0.75 0.00
Ks 0.38 0.38 0.00
d 1.00
endmtl
newmtl mtl13
Ka 0.00 0.00 0.00
Kd 0.00 0.00 0.00
Ks 0.00 0.00 0.00
d 1.00
endmtl
newmtl mtl14
Ka 0.50 0.50 0.50
Kd 0.50 0.50 0.50
Ks 0.25 0.25 0.25
d 1.00
endmtl
newmtl mtl15
Ka 0.50 0.25 0.00
Kd 0.50 0.25 0.00
Ks 0.44 0.22 0.00
d 1.00
endmtl
newmtl mtl16
Ka 1.00 1.00 0.50
Kd 1.00 1.00 0.50
Ks 0.50 0.50 0.25
d 1.00
endmtl
newmtl mtl17
Ka 1.00 0.89 0.81
Kd 1.00 0.89 0.81
Ks 0.50 0.44 0.40
d 1.00
endmtl
newmtl mtl18
Ka 0.25 0.25 0.25
Kd 0.25 0.25 0.25
Ks 0.07 0.07 0.07
d 1.00
endmtl
newmtl mtl19
Ka 0.64 0.62 0.60
Kd 0.45 0.43 0.42
Ks 0.03 0.03 0.03
d 1.00
endmtl
newmtl mtl20
Ka 0.77 0.77 0.77
Kd 0.77 0.77 0.77
Ks 0.62 0.62 0.62
d 1.00
endmtl
newmtl mtl21
Ka 0.50 0.25 0.25
Kd 0.50 0.25 0.25
Ks 0.44 0.22 0.22
d 1.00
endmtl
newmtl mtl22
Ka 0.00 0.50 0.00
Kd 0.00 0.50 0.00
Ks 0.00 0.25 0.00
d 1.00
endmtl
newmtl mtl23
Ka 0.65 0.62 0.59
Kd 0.65 0.62 0.59
Ks 0.45 0.44 0.41
d 1.00
endmtl
newmtl mtl24
Ka 0.50 0.50 0.00
Kd 0.50 0.50 0.00
Ks 0.25 0.25 0.00
d 1.00
endmtl
newmtl mtl25
Ka 1.00 0.92 0.81
Kd 1.00 0.92 0.81
Ks 0.50 0.46 0.40
d 1.00
endmtl
newmtl mtl26
Ka 0.07 0.75 0.00
Kd 0.05 0.60 0.00
Ks 0.07 0.75 0.00
d 1.00
endmtl
newmtl mtl27
Ka 0.84 0.82 0.75
Kd 0.84 0.82 0.75
Ks 0.42 0.41 0.38
d 1.00
endmtl
newmtl mtl28
Ka 0.75 0.75 0.75
Kd 0.60 0.60 0.60
Ks 0.75 0.75 0.75
d 1.00
endmtl
newmtl mtl29
Ka 0.97 0.88 0.60
Kd 0.97 0.88 0.60
Ks 0.68 0.62 0.42
d 1.00
endmtl
newmtl mtl30
Ka 0.54 0.54 0.54
Kd 1.00 1.00 1.00
Ks 0.48 0.48 0.48
d 1.00
endmtl
newmtl mtl31
Ka 0.27 0.26 0.26
Kd 0.52 0.51 0.51
Ks 0.48 0.48 0.48
d 1.00
endmtl
newmtl mtl32
Ka 0.46 0.33 0.07
Kd 0.87 0.63 0.17
Ks 0.48 0.48 0.48
d 1.00
endmtl
newmtl mtl33
Ka 0.46 0.31 0.17
Kd 0.86 0.60 0.34
Ks 0.48 0.48 0.48
d 1.00
endmtl
newmtl mtl34
Ka 0.26 0.28 0.28
Kd 0.51 0.53 0.55
Ks 0.48 0.48 0.48
d 1.00
endmtl
newmtl mtl35
Ka 0.12 0.12 0.12
Kd 0.25 0.25 0.25
Ks 0.48 0.48 0.48
d 1.00
endmtl
newmtl mtl36
Ka 0.09 0.09 0.09
Kd 0.20 0.20 0.20
Ks 0.48 0.48 0.48
d 1.00
endmtl
newmtl mtl37
Ka 0.01 0.01 0.01
Kd 0.03 0.03 0.05
Ks 0.48 0.48 0.48
d 1.00
endmtl
newmtl mtl38
Ka 0.33 0.33 0.33
Kd 0.63 0.63 0.63
Ks 0.48 0.48 0.48
d 1.00
endmtl
newmtl mtl39
Ka 1.00 1.00 1.00
Kd 1.00 1.00 1.00
Ks 1.00 1.00 1.00
d 1.00
endmtl
newmtl mtl40
Ka 0.00 0.33 0.65
Kd 0.00 0.33 0.65
Ks 0.00 0.33 0.65
d 1.00
endmtl
newmtl mtl41
Ka 0.62 0.62 0.36
Kd 0.62 0.62 0.36
Ks 0.62 0.62 0.36
d 1.00
endmtl
newmtl mtl42
Ka 0.00 0.15 0.36
Kd 0.00 0.15 0.36
Ks 0.00 0.15 0.36
d 1.00
endmtl

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,301 @@
# Designed by EasyEDA Pro
newmtl mtl1
Ka 0.22 0.22 0.22
Kd 0.22 0.22 0.22
Ks 0.07 0.07 0.07
d 1.00
endmtl
newmtl mtl2
Ka 0.65 0.65 0.65
Kd 0.45 0.45 0.45
Ks 0.03 0.03 0.03
d 1.00
endmtl
newmtl mtl3
Ka 0.85 0.85 0.85
Kd 0.85 0.85 0.85
Ks 0.42 0.42 0.42
d 1.00
endmtl
newmtl mtl4
Ka 0.30 0.30 0.30
Kd 0.21 0.21 0.21
Ks 0.02 0.02 0.02
d 1.00
endmtl
newmtl mtl5
Ka 0.67 0.67 0.67
Kd 0.67 0.67 0.67
Ks 0.47 0.47 0.47
d 1.00
endmtl
newmtl mtl6
Ka 0.83 0.67 0.13
Kd 0.83 0.67 0.13
Ks 0.83 0.67 0.13
d 1.00
endmtl
newmtl mtl7
Ka 1.00 1.00 1.00
Kd 1.00 1.00 1.00
Ks 0.88 0.88 0.88
d 1.00
endmtl
newmtl mtl8
Ka 1.00 1.00 1.00
Kd 1.00 1.00 1.00
Ks 0.50 0.50 0.50
d 1.00
endmtl
newmtl mtl9
Ka 0.83 0.67 0.13
Kd 0.83 0.67 0.13
Ks 0.67 0.54 0.10
d 1.00
endmtl
newmtl mtl10
Ka 0.22 0.22 0.22
Kd 0.22 0.22 0.22
Ks 0.11 0.11 0.11
d 1.00
endmtl
newmtl mtl11
Ka 0.75 0.75 0.75
Kd 0.75 0.75 0.75
Ks 0.38 0.38 0.38
d 1.00
endmtl
newmtl mtl12
Ka 0.65 0.62 0.59
Kd 0.65 0.62 0.59
Ks 0.45 0.44 0.41
d 1.00
endmtl
newmtl mtl13
Ka 0.16 0.16 0.16
Kd 0.11 0.11 0.11
Ks 0.01 0.01 0.01
d 1.00
endmtl
newmtl mtl14
Ka 0.97 0.97 0.97
Kd 0.68 0.68 0.68
Ks 0.05 0.05 0.05
d 1.00
endmtl
newmtl mtl15
Ka 0.25 0.25 0.25
Kd 0.25 0.25 0.25
Ks 0.13 0.13 0.13
d 1.00
endmtl
newmtl mtl16
Ka 0.50 0.50 0.50
Kd 0.35 0.35 0.35
Ks 0.02 0.02 0.02
d 1.00
endmtl
newmtl mtl17
Ka 0.25 0.25 0.25
Kd 0.25 0.25 0.25
Ks 0.07 0.07 0.07
d 1.00
endmtl
newmtl mtl18
Ka 0.64 0.62 0.60
Kd 0.45 0.43 0.42
Ks 0.03 0.03 0.03
d 1.00
endmtl
newmtl mtl19
Ka 0.77 0.77 0.77
Kd 0.77 0.77 0.77
Ks 0.62 0.62 0.62
d 1.00
endmtl
newmtl mtl20
Ka 0.50 0.50 0.50
Kd 0.50 0.50 0.50
Ks 0.25 0.25 0.25
d 1.00
endmtl
newmtl mtl21
Ka 0.00 0.50 0.00
Kd 0.00 0.50 0.00
Ks 0.00 0.25 0.00
d 1.00
endmtl
newmtl mtl22
Ka 0.00 0.00 0.00
Kd 0.00 0.00 0.00
Ks 0.00 0.00 0.00
d 1.00
endmtl
newmtl mtl23
Ka 1.00 1.00 0.00
Kd 1.00 1.00 0.00
Ks 0.50 0.50 0.00
d 1.00
endmtl
newmtl mtl24
Ka 0.50 0.25 0.00
Kd 0.50 0.25 0.00
Ks 0.44 0.22 0.00
d 1.00
endmtl
newmtl mtl25
Ka 0.97 0.88 0.60
Kd 0.97 0.88 0.60
Ks 0.68 0.62 0.42
d 1.00
endmtl
newmtl mtl26
Ka 0.11 0.11 0.11
Kd 0.11 0.11 0.11
Ks 0.08 0.08 0.08
d 1.00
endmtl
newmtl mtl27
Ka 0.41 0.41 0.41
Kd 0.41 0.41 0.41
Ks 0.20 0.20 0.20
d 1.00
endmtl
newmtl mtl28
Ka 0.79 0.82 0.93
Kd 0.79 0.82 0.93
Ks 0.40 0.41 0.47
d 1.00
endmtl
newmtl mtl29
Ka 0.65 0.65 0.65
Kd 0.65 0.65 0.65
Ks 0.32 0.32 0.32
d 1.00
endmtl
newmtl mtl30
Ka 1.00 1.00 1.00
Kd 1.00 1.00 1.00
Ks 0.30 0.30 0.30
d 1.00
endmtl
newmtl mtl31
Ka 0.51 0.42 0.25
Kd 0.95 0.80 0.49
Ks 0.48 0.48 0.48
d 1.00
endmtl
newmtl mtl32
Ka 1.00 0.93 0.62
Kd 1.00 0.93 0.62
Ks 0.50 0.47 0.31
d 1.00
endmtl
newmtl mtl33
Ka 0.85 0.85 0.85
Kd 0.85 0.85 0.85
Ks 0.43 0.43 0.43
d 1.00
endmtl
newmtl mtl34
Ka 0.59 0.46 0.00
Kd 0.59 0.46 0.00
Ks 0.29 0.23 0.00
d 1.00
endmtl
newmtl mtl35
Ka 0.11 0.11 0.11
Kd 0.11 0.11 0.11
Ks 0.06 0.06 0.06
d 1.00
endmtl
newmtl mtl36
Ka 0.82 0.82 0.82
Kd 0.82 0.82 0.82
Ks 0.41 0.41 0.41
d 1.00
endmtl
newmtl mtl37
Ka 1.00 1.00 1.00
Kd 0.88 0.88 0.88
Ks 0.75 0.75 0.75
d 1.00
endmtl
newmtl mtl38
Ka 1.00 1.00 1.00
Kd 0.25 0.25 0.25
Ks 0.75 0.75 0.75
d 1.00
endmtl
newmtl mtl39
Ka 1.00 1.00 1.00
Kd 0.76 0.76 0.76
Ks 0.75 0.75 0.75
d 1.00
endmtl
newmtl mtl40
Ka 1.00 0.50 0.00
Kd 1.00 0.50 0.00
Ks 0.88 0.44 0.00
d 1.00
endmtl
newmtl mtl41
Ka 0.00 1.00 0.00
Kd 0.00 1.00 0.00
Ks 0.00 0.50 0.00
d 1.00
endmtl
newmtl mtl42
Ka 0.67 0.70 0.77
Kd 0.67 0.70 0.77
Ks 0.33 0.35 0.38
d 1.00
endmtl
newmtl mtl43
Ka 0.30 0.30 0.30
Kd 0.30 0.30 0.30
Ks 0.09 0.09 0.09
d 1.00
endmtl
newmtl mtl44
Ka 0.84 0.82 0.75
Kd 0.84 0.82 0.75
Ks 0.42 0.41 0.38
d 1.00
endmtl
newmtl mtl45
Ka 0.10 0.10 0.10
Kd 0.10 0.10 0.10
Ks 0.04 0.04 0.04
d 1.00
endmtl
newmtl mtl46
Ka 0.86 0.86 0.86
Kd 0.51 0.51 0.51
Ks 0.35 0.35 0.35
d 1.00
endmtl
newmtl mtl47
Ka 1.00 1.00 1.00
Kd 1.00 1.00 1.00
Ks 1.00 1.00 1.00
d 1.00
endmtl
newmtl mtl48
Ka 0.00 0.33 0.65
Kd 0.00 0.33 0.65
Ks 0.00 0.33 0.65
d 1.00
endmtl
newmtl mtl49
Ka 0.62 0.62 0.36
Kd 0.62 0.62 0.36
Ks 0.62 0.62 0.36
d 1.00
endmtl
newmtl mtl50
Ka 0.00 0.15 0.36
Kd 0.00 0.15 0.36
Ks 0.00 0.15 0.36
d 1.00
endmtl

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,265 @@
# Designed by EasyEDA Pro
newmtl mtl1
Ka 0.59 0.46 0.00
Kd 0.59 0.46 0.00
Ks 0.29 0.23 0.00
d 1.00
endmtl
newmtl mtl2
Ka 0.85 0.85 0.85
Kd 0.85 0.85 0.85
Ks 0.43 0.43 0.43
d 1.00
endmtl
newmtl mtl3
Ka 1.00 1.00 1.00
Kd 1.00 1.00 1.00
Ks 0.88 0.88 0.88
d 1.00
endmtl
newmtl mtl4
Ka 1.00 1.00 1.00
Kd 1.00 1.00 1.00
Ks 0.50 0.50 0.50
d 1.00
endmtl
newmtl mtl5
Ka 1.00 0.89 0.81
Kd 1.00 0.89 0.81
Ks 0.50 0.44 0.40
d 1.00
endmtl
newmtl mtl6
Ka 0.00 0.00 0.00
Kd 0.00 0.00 0.00
Ks 0.00 0.00 0.00
d 1.00
endmtl
newmtl mtl7
Ka 0.22 0.22 0.22
Kd 0.22 0.22 0.22
Ks 0.11 0.11 0.11
d 1.00
endmtl
newmtl mtl8
Ka 0.85 0.85 0.85
Kd 0.85 0.85 0.85
Ks 0.42 0.42 0.42
d 1.00
endmtl
newmtl mtl9
Ka 0.75 0.75 0.75
Kd 0.75 0.75 0.75
Ks 0.38 0.38 0.38
d 1.00
endmtl
newmtl mtl10
Ka 0.25 0.25 0.25
Kd 0.25 0.25 0.25
Ks 0.13 0.13 0.13
d 1.00
endmtl
newmtl mtl11
Ka 0.50 0.50 0.50
Kd 0.35 0.35 0.35
Ks 0.02 0.02 0.02
d 1.00
endmtl
newmtl mtl12
Ka 0.30 0.30 0.30
Kd 0.21 0.21 0.21
Ks 0.02 0.02 0.02
d 1.00
endmtl
newmtl mtl13
Ka 0.67 0.67 0.67
Kd 0.67 0.67 0.67
Ks 0.47 0.47 0.47
d 1.00
endmtl
newmtl mtl14
Ka 0.65 0.65 0.65
Kd 0.65 0.65 0.65
Ks 0.32 0.32 0.32
d 1.00
endmtl
newmtl mtl15
Ka 0.85 0.85 0.85
Kd 0.85 0.85 0.85
Ks 0.68 0.68 0.68
d 1.00
endmtl
newmtl mtl16
Ka 0.84 0.82 0.75
Kd 0.84 0.82 0.75
Ks 0.25 0.24 0.23
d 1.00
endmtl
newmtl mtl17
Ka 0.25 0.25 0.25
Kd 0.18 0.18 0.18
Ks 0.01 0.01 0.01
d 1.00
endmtl
newmtl mtl18
Ka 0.77 0.77 0.77
Kd 0.77 0.77 0.77
Ks 0.62 0.62 0.62
d 1.00
endmtl
newmtl mtl19
Ka 1.00 1.00 1.00
Kd 0.80 0.80 0.80
Ks 1.00 1.00 1.00
d 1.00
endmtl
newmtl mtl20
Ka 0.25 0.25 0.25
Kd 0.20 0.20 0.20
Ks 0.25 0.25 0.25
d 1.00
endmtl
newmtl mtl21
Ka 0.75 0.75 0.75
Kd 0.60 0.60 0.60
Ks 0.75 0.75 0.75
d 1.00
endmtl
newmtl mtl22
Ka 0.50 0.50 0.50
Kd 0.40 0.40 0.40
Ks 0.50 0.50 0.50
d 1.00
endmtl
newmtl mtl23
Ka 0.25 0.25 0.25
Kd 0.25 0.25 0.25
Ks 0.07 0.07 0.07
d 1.00
endmtl
newmtl mtl24
Ka 0.64 0.62 0.60
Kd 0.45 0.43 0.42
Ks 0.03 0.03 0.03
d 1.00
endmtl
newmtl mtl25
Ka 0.54 0.35 0.34
Kd 0.54 0.35 0.34
Ks 0.38 0.24 0.24
d 1.00
endmtl
newmtl mtl26
Ka 0.89 0.89 0.89
Kd 0.63 0.63 0.63
Ks 0.04 0.04 0.04
d 1.00
endmtl
newmtl mtl27
Ka 0.83 0.67 0.13
Kd 0.83 0.67 0.13
Ks 0.83 0.67 0.13
d 1.00
endmtl
newmtl mtl28
Ka 1.00 1.00 0.00
Kd 1.00 1.00 0.00
Ks 0.50 0.50 0.00
d 1.00
endmtl
newmtl mtl29
Ka 1.00 0.65 0.00
Kd 1.00 0.65 0.00
Ks 0.50 0.33 0.00
d 1.00
endmtl
newmtl mtl30
Ka 0.50 0.50 0.50
Kd 0.50 0.50 0.50
Ks 0.25 0.25 0.25
d 1.00
endmtl
newmtl mtl31
Ka 0.79 0.82 0.93
Kd 0.79 0.82 0.93
Ks 0.40 0.41 0.47
d 1.00
endmtl
newmtl mtl32
Ka 0.41 0.41 0.41
Kd 0.41 0.41 0.41
Ks 0.20 0.20 0.20
d 1.00
endmtl
newmtl mtl33
Ka 0.00 0.50 0.00
Kd 0.00 0.50 0.00
Ks 0.00 0.25 0.00
d 1.00
endmtl
newmtl mtl34
Ka 0.65 0.62 0.59
Kd 0.65 0.62 0.59
Ks 0.45 0.44 0.41
d 1.00
endmtl
newmtl mtl35
Ka 1.00 1.00 0.50
Kd 1.00 1.00 0.50
Ks 0.50 0.50 0.25
d 1.00
endmtl
newmtl mtl36
Ka 0.50 0.50 0.00
Kd 0.50 0.50 0.00
Ks 0.25 0.25 0.00
d 1.00
endmtl
newmtl mtl37
Ka 1.00 0.94 0.85
Kd 1.00 0.94 0.85
Ks 0.30 0.28 0.25
d 1.00
endmtl
newmtl mtl38
Ka 0.44 0.44 0.44
Kd 0.44 0.44 0.44
Ks 0.22 0.22 0.22
d 1.00
endmtl
newmtl mtl39
Ka 0.83 0.83 0.82
Kd 0.83 0.83 0.82
Ks 0.67 0.67 0.65
d 1.00
endmtl
newmtl mtl40
Ka 0.50 0.25 0.00
Kd 0.50 0.25 0.00
Ks 0.44 0.22 0.00
d 1.00
endmtl
newmtl mtl41
Ka 1.00 1.00 1.00
Kd 1.00 1.00 1.00
Ks 1.00 1.00 1.00
d 1.00
endmtl
newmtl mtl42
Ka 0.00 0.33 0.65
Kd 0.00 0.33 0.65
Ks 0.00 0.33 0.65
d 1.00
endmtl
newmtl mtl43
Ka 0.62 0.62 0.36
Kd 0.62 0.62 0.36
Ks 0.62 0.62 0.36
d 1.00
endmtl
newmtl mtl44
Ka 0.00 0.15 0.36
Kd 0.00 0.15 0.36
Ks 0.00 0.15 0.36
d 1.00
endmtl

File diff suppressed because it is too large Load Diff