base bg
|
@ -366,14 +366,6 @@
|
|||
"detail": "django.shortcuts",
|
||||
"documentation": {}
|
||||
},
|
||||
{
|
||||
"label": "render",
|
||||
"importPath": "django.shortcuts",
|
||||
"description": "django.shortcuts",
|
||||
"isExtraImport": true,
|
||||
"detail": "django.shortcuts",
|
||||
"documentation": {}
|
||||
},
|
||||
{
|
||||
"label": "parse_image",
|
||||
"importPath": "api.tracer",
|
||||
|
@ -513,6 +505,14 @@
|
|||
"detail": "object.models",
|
||||
"documentation": {}
|
||||
},
|
||||
{
|
||||
"label": "DjangoFilterBackend",
|
||||
"importPath": "django_filters.rest_framework",
|
||||
"description": "django_filters.rest_framework",
|
||||
"isExtraImport": true,
|
||||
"detail": "django_filters.rest_framework",
|
||||
"documentation": {}
|
||||
},
|
||||
{
|
||||
"label": "sys",
|
||||
"kind": 6,
|
||||
|
@ -761,7 +761,7 @@
|
|||
"kind": 5,
|
||||
"importPath": "back.back.settings",
|
||||
"description": "back.back.settings",
|
||||
"peekOfCode": "INSTALLED_APPS = [\n \"django.contrib.admin\",\n \"django.contrib.auth\",\n \"django.contrib.contenttypes\",\n \"django.contrib.sessions\",\n \"django.contrib.messages\",\n \"django.contrib.staticfiles\",\n \"corsheaders\",\n \"api\",\n \"rest_framework\",",
|
||||
"peekOfCode": "INSTALLED_APPS = [\n \"django.contrib.admin\",\n \"django.contrib.auth\",\n \"django.contrib.contenttypes\",\n \"django.contrib.sessions\",\n \"django.contrib.messages\",\n \"django.contrib.staticfiles\",\n \"corsheaders\",\n \"django_filters\",\n \"rest_framework\",",
|
||||
"detail": "back.back.settings",
|
||||
"documentation": {}
|
||||
},
|
||||
|
@ -824,7 +824,7 @@
|
|||
"kind": 5,
|
||||
"importPath": "back.back.settings",
|
||||
"description": "back.back.settings",
|
||||
"peekOfCode": "LANGUAGE_CODE = \"en-us\"\nTIME_ZONE = \"UTC\"\nUSE_I18N = True\nUSE_TZ = True\n# Static files (CSS, JavaScript, Images)\n# https://docs.djangoproject.com/en/5.0/howto/static-files/\nSTATIC_URL = \"static/\"\n# Default primary key field type\n# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field\nDEFAULT_AUTO_FIELD = \"django.db.models.BigAutoField\"",
|
||||
"peekOfCode": "LANGUAGE_CODE = \"en-us\"\nTIME_ZONE = \"UTC\"\nUSE_I18N = True\nUSE_TZ = True\n# Static files (CSS, JavaScript, Images)\n# https://docs.djangoproject.com/en/5.0/howto/static-files/\nSTATIC_URL = \"static/\"\n# Default primary key field type\n# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field\nREST_FRAMEWORK = {",
|
||||
"detail": "back.back.settings",
|
||||
"documentation": {}
|
||||
},
|
||||
|
@ -833,7 +833,7 @@
|
|||
"kind": 5,
|
||||
"importPath": "back.back.settings",
|
||||
"description": "back.back.settings",
|
||||
"peekOfCode": "TIME_ZONE = \"UTC\"\nUSE_I18N = True\nUSE_TZ = True\n# Static files (CSS, JavaScript, Images)\n# https://docs.djangoproject.com/en/5.0/howto/static-files/\nSTATIC_URL = \"static/\"\n# Default primary key field type\n# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field\nDEFAULT_AUTO_FIELD = \"django.db.models.BigAutoField\"\nLOGGING = {",
|
||||
"peekOfCode": "TIME_ZONE = \"UTC\"\nUSE_I18N = True\nUSE_TZ = True\n# Static files (CSS, JavaScript, Images)\n# https://docs.djangoproject.com/en/5.0/howto/static-files/\nSTATIC_URL = \"static/\"\n# Default primary key field type\n# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field\nREST_FRAMEWORK = {\n 'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend']",
|
||||
"detail": "back.back.settings",
|
||||
"documentation": {}
|
||||
},
|
||||
|
@ -842,7 +842,7 @@
|
|||
"kind": 5,
|
||||
"importPath": "back.back.settings",
|
||||
"description": "back.back.settings",
|
||||
"peekOfCode": "USE_I18N = True\nUSE_TZ = True\n# Static files (CSS, JavaScript, Images)\n# https://docs.djangoproject.com/en/5.0/howto/static-files/\nSTATIC_URL = \"static/\"\n# Default primary key field type\n# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field\nDEFAULT_AUTO_FIELD = \"django.db.models.BigAutoField\"\nLOGGING = {\n \"version\": 1,",
|
||||
"peekOfCode": "USE_I18N = True\nUSE_TZ = True\n# Static files (CSS, JavaScript, Images)\n# https://docs.djangoproject.com/en/5.0/howto/static-files/\nSTATIC_URL = \"static/\"\n# Default primary key field type\n# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field\nREST_FRAMEWORK = {\n 'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend']\n}",
|
||||
"detail": "back.back.settings",
|
||||
"documentation": {}
|
||||
},
|
||||
|
@ -851,7 +851,7 @@
|
|||
"kind": 5,
|
||||
"importPath": "back.back.settings",
|
||||
"description": "back.back.settings",
|
||||
"peekOfCode": "USE_TZ = True\n# Static files (CSS, JavaScript, Images)\n# https://docs.djangoproject.com/en/5.0/howto/static-files/\nSTATIC_URL = \"static/\"\n# Default primary key field type\n# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field\nDEFAULT_AUTO_FIELD = \"django.db.models.BigAutoField\"\nLOGGING = {\n \"version\": 1,\n \"disable_existing_loggers\": False,",
|
||||
"peekOfCode": "USE_TZ = True\n# Static files (CSS, JavaScript, Images)\n# https://docs.djangoproject.com/en/5.0/howto/static-files/\nSTATIC_URL = \"static/\"\n# Default primary key field type\n# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field\nREST_FRAMEWORK = {\n 'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend']\n}\nCRISPY_ALLOWED_TEMPLATE_PACKS = \"bootstrap4\"",
|
||||
"detail": "back.back.settings",
|
||||
"documentation": {}
|
||||
},
|
||||
|
@ -860,7 +860,34 @@
|
|||
"kind": 5,
|
||||
"importPath": "back.back.settings",
|
||||
"description": "back.back.settings",
|
||||
"peekOfCode": "STATIC_URL = \"static/\"\n# Default primary key field type\n# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field\nDEFAULT_AUTO_FIELD = \"django.db.models.BigAutoField\"\nLOGGING = {\n \"version\": 1,\n \"disable_existing_loggers\": False,\n \"formatters\": {\n \"verbose\": {\n \"format\": \"{levelname} {asctime} {module} {process:d} {thread:d} {message}\",",
|
||||
"peekOfCode": "STATIC_URL = \"static/\"\n# Default primary key field type\n# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field\nREST_FRAMEWORK = {\n 'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend']\n}\nCRISPY_ALLOWED_TEMPLATE_PACKS = \"bootstrap4\"\nCRISPY_TEMPLATE_PACK = \"bootstrap4\"\nDEFAULT_AUTO_FIELD = \"django.db.models.BigAutoField\"\nLOGGING = {",
|
||||
"detail": "back.back.settings",
|
||||
"documentation": {}
|
||||
},
|
||||
{
|
||||
"label": "REST_FRAMEWORK",
|
||||
"kind": 5,
|
||||
"importPath": "back.back.settings",
|
||||
"description": "back.back.settings",
|
||||
"peekOfCode": "REST_FRAMEWORK = {\n 'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend']\n}\nCRISPY_ALLOWED_TEMPLATE_PACKS = \"bootstrap4\"\nCRISPY_TEMPLATE_PACK = \"bootstrap4\"\nDEFAULT_AUTO_FIELD = \"django.db.models.BigAutoField\"\nLOGGING = {\n \"version\": 1,\n \"disable_existing_loggers\": False,\n \"formatters\": {",
|
||||
"detail": "back.back.settings",
|
||||
"documentation": {}
|
||||
},
|
||||
{
|
||||
"label": "CRISPY_ALLOWED_TEMPLATE_PACKS",
|
||||
"kind": 5,
|
||||
"importPath": "back.back.settings",
|
||||
"description": "back.back.settings",
|
||||
"peekOfCode": "CRISPY_ALLOWED_TEMPLATE_PACKS = \"bootstrap4\"\nCRISPY_TEMPLATE_PACK = \"bootstrap4\"\nDEFAULT_AUTO_FIELD = \"django.db.models.BigAutoField\"\nLOGGING = {\n \"version\": 1,\n \"disable_existing_loggers\": False,\n \"formatters\": {\n \"verbose\": {\n \"format\": \"{levelname} {asctime} {module} {process:d} {thread:d} {message}\",\n \"style\": \"{\",",
|
||||
"detail": "back.back.settings",
|
||||
"documentation": {}
|
||||
},
|
||||
{
|
||||
"label": "CRISPY_TEMPLATE_PACK",
|
||||
"kind": 5,
|
||||
"importPath": "back.back.settings",
|
||||
"description": "back.back.settings",
|
||||
"peekOfCode": "CRISPY_TEMPLATE_PACK = \"bootstrap4\"\nDEFAULT_AUTO_FIELD = \"django.db.models.BigAutoField\"\nLOGGING = {\n \"version\": 1,\n \"disable_existing_loggers\": False,\n \"formatters\": {\n \"verbose\": {\n \"format\": \"{levelname} {asctime} {module} {process:d} {thread:d} {message}\",\n \"style\": \"{\",\n },",
|
||||
"detail": "back.back.settings",
|
||||
"documentation": {}
|
||||
},
|
||||
|
@ -1067,7 +1094,7 @@
|
|||
"kind": 6,
|
||||
"importPath": "back.object.views",
|
||||
"description": "back.object.views",
|
||||
"peekOfCode": "class ClickableAreaViewSet(viewsets.ModelViewSet):\n queryset = ClickableArea.objects.all()\n serializer_class = ClickableAreaSerializer\nclass Element3DViewSet(viewsets.ModelViewSet):\n queryset = Element3D.objects.all()\n serializer_class = Element3DSerializer",
|
||||
"peekOfCode": "class ClickableAreaViewSet(viewsets.ModelViewSet):\n queryset = ClickableArea.objects.all()\n serializer_class = ClickableAreaSerializer\nclass Element3DViewSet(viewsets.ModelViewSet):\n queryset = Element3D.objects.all()\n serializer_class = Element3DSerializer\n filterset_fields = ('parent', )\n filter_backends = [DjangoFilterBackend]",
|
||||
"detail": "back.object.views",
|
||||
"documentation": {}
|
||||
},
|
||||
|
@ -1076,7 +1103,7 @@
|
|||
"kind": 6,
|
||||
"importPath": "back.object.views",
|
||||
"description": "back.object.views",
|
||||
"peekOfCode": "class Element3DViewSet(viewsets.ModelViewSet):\n queryset = Element3D.objects.all()\n serializer_class = Element3DSerializer",
|
||||
"peekOfCode": "class Element3DViewSet(viewsets.ModelViewSet):\n queryset = Element3D.objects.all()\n serializer_class = Element3DSerializer\n filterset_fields = ('parent', )\n filter_backends = [DjangoFilterBackend]",
|
||||
"detail": "back.object.views",
|
||||
"documentation": {}
|
||||
},
|
||||
|
|
|
@ -77,8 +77,11 @@ INSTALLED_APPS = [
|
|||
"django.contrib.messages",
|
||||
"django.contrib.staticfiles",
|
||||
"corsheaders",
|
||||
"api",
|
||||
"django_filters",
|
||||
"rest_framework",
|
||||
"crispy_forms",
|
||||
"crispy_bootstrap4",
|
||||
"api",
|
||||
"frontImages",
|
||||
"object",
|
||||
]
|
||||
|
@ -172,6 +175,13 @@ STATIC_URL = "static/"
|
|||
# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field
|
||||
|
||||
|
||||
REST_FRAMEWORK = {
|
||||
'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend']
|
||||
}
|
||||
|
||||
CRISPY_ALLOWED_TEMPLATE_PACKS = "bootstrap4"
|
||||
CRISPY_TEMPLATE_PACK = "bootstrap4"
|
||||
|
||||
DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"
|
||||
LOGGING = {
|
||||
"version": 1,
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
from django.shortcuts import render
|
||||
|
||||
from rest_framework import viewsets
|
||||
|
||||
from django_filters.rest_framework import DjangoFilterBackend
|
||||
from .models import ClickableArea, Element3D
|
||||
from .serializers import ClickableAreaSerializer, Element3DSerializer
|
||||
|
||||
|
@ -13,3 +11,6 @@ class ClickableAreaViewSet(viewsets.ModelViewSet):
|
|||
class Element3DViewSet(viewsets.ModelViewSet):
|
||||
queryset = Element3D.objects.all()
|
||||
serializer_class = Element3DSerializer
|
||||
|
||||
filterset_fields = ('parent', )
|
||||
filter_backends = [DjangoFilterBackend]
|
|
@ -8,6 +8,7 @@ export {}
|
|||
declare module 'vue' {
|
||||
export interface GlobalComponents {
|
||||
copy: typeof import('./src/components/Promo/modelItem copy.vue')['default']
|
||||
Env: typeof import('./src/components/Promo/env.vue')['default']
|
||||
Floorplan: typeof import('./src/components/Floorplan/index.vue')['default']
|
||||
Gallery: typeof import('./src/components/Promo/gallery.vue')['default']
|
||||
Game: typeof import('./src/components/Game.vue')['default']
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
"version": "0.0.0",
|
||||
"dependencies": {
|
||||
"@fireworks-js/vue": "^2.10.7",
|
||||
"@monogrid/gainmap-js": "^3.0.5",
|
||||
"@tresjs/cientos": "^3.9.0",
|
||||
"@tresjs/core": "^3.9.0",
|
||||
"@vueuse/components": "^10.9.0",
|
||||
|
@ -518,6 +519,17 @@
|
|||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/@monogrid/gainmap-js": {
|
||||
"version": "3.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@monogrid/gainmap-js/-/gainmap-js-3.0.5.tgz",
|
||||
"integrity": "sha512-53sCTG4FaJBaAq/tcufARtVYDMDGqyBT9i7F453pWGhZ5LqubDHDWtYoHo9VhQqMcHTEexdJqSsR58y+9HVmQA==",
|
||||
"dependencies": {
|
||||
"promise-worker-transferable": "^1.0.4"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"three": ">= 0.159.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@nodelib/fs.scandir": {
|
||||
"version": "2.1.5",
|
||||
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
|
||||
|
@ -1557,12 +1569,12 @@
|
|||
}
|
||||
},
|
||||
"node_modules/braces": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
|
||||
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
|
||||
"integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"fill-range": "^7.0.1"
|
||||
"fill-range": "^7.1.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
|
@ -2283,9 +2295,9 @@
|
|||
"integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A=="
|
||||
},
|
||||
"node_modules/fill-range": {
|
||||
"version": "7.0.1",
|
||||
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
|
||||
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
|
||||
"version": "7.1.1",
|
||||
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
|
||||
"integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"to-regex-range": "^5.0.1"
|
||||
|
@ -2446,6 +2458,11 @@
|
|||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/immediate": {
|
||||
"version": "3.0.6",
|
||||
"resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
|
||||
"integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ=="
|
||||
},
|
||||
"node_modules/immutable": {
|
||||
"version": "4.3.5",
|
||||
"resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz",
|
||||
|
@ -2519,6 +2536,11 @@
|
|||
"node": ">=0.12.0"
|
||||
}
|
||||
},
|
||||
"node_modules/is-promise": {
|
||||
"version": "2.2.2",
|
||||
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz",
|
||||
"integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ=="
|
||||
},
|
||||
"node_modules/is-stream": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
|
||||
|
@ -2560,6 +2582,14 @@
|
|||
"integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/lie": {
|
||||
"version": "3.3.0",
|
||||
"resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz",
|
||||
"integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
|
||||
"dependencies": {
|
||||
"immediate": "~3.0.5"
|
||||
}
|
||||
},
|
||||
"node_modules/local-pkg": {
|
||||
"version": "0.5.0",
|
||||
"resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz",
|
||||
|
@ -2953,6 +2983,15 @@
|
|||
"resolved": "https://registry.npmjs.org/potpack/-/potpack-1.0.2.tgz",
|
||||
"integrity": "sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ=="
|
||||
},
|
||||
"node_modules/promise-worker-transferable": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/promise-worker-transferable/-/promise-worker-transferable-1.0.4.tgz",
|
||||
"integrity": "sha512-bN+0ehEnrXfxV2ZQvU2PetO0n4gqBD4ulq3MI1WOPLgr7/Mg9yRQkX5+0v1vagr74ZTsl7XtzlaYDo2EuCeYJw==",
|
||||
"dependencies": {
|
||||
"is-promise": "^2.1.0",
|
||||
"lie": "^3.0.2"
|
||||
}
|
||||
},
|
||||
"node_modules/queue-microtask": {
|
||||
"version": "1.2.3",
|
||||
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"@fireworks-js/vue": "^2.10.7",
|
||||
"@monogrid/gainmap-js": "^3.0.5",
|
||||
"@tresjs/cientos": "^3.9.0",
|
||||
"@tresjs/core": "^3.9.0",
|
||||
"@vueuse/components": "^10.9.0",
|
||||
|
|
Before Width: | Height: | Size: 762 KiB |
Before Width: | Height: | Size: 1.8 MiB |
Before Width: | Height: | Size: 787 KiB |
Before Width: | Height: | Size: 2.4 MiB |
Before Width: | Height: | Size: 2.4 MiB |
Before Width: | Height: | Size: 1.1 MiB |
Before Width: | Height: | Size: 1.4 MiB |
Before Width: | Height: | Size: 1.6 MiB |
Before Width: | Height: | Size: 936 KiB |
Before Width: | Height: | Size: 282 KiB |
Before Width: | Height: | Size: 2.0 MiB |
Before Width: | Height: | Size: 455 KiB |
Before Width: | Height: | Size: 1.4 MiB |
Before Width: | Height: | Size: 2.2 MiB |
Before Width: | Height: | Size: 2.3 MiB |
Before Width: | Height: | Size: 947 KiB |
Before Width: | Height: | Size: 1.6 MiB |
Before Width: | Height: | Size: 1.7 MiB |
After Width: | Height: | Size: 15 KiB |
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
"gainMapMax": [
|
||||
-0.08188214896822735,
|
||||
-0.08188214896822735,
|
||||
-0.08188214896822735
|
||||
],
|
||||
"gainMapMin": [
|
||||
-0.08188214896822735,
|
||||
-0.08188214896822735,
|
||||
-0.08188214896822735
|
||||
],
|
||||
"gamma": [
|
||||
1,
|
||||
1,
|
||||
1
|
||||
],
|
||||
"hdrCapacityMax": -0.08188214896822735,
|
||||
"hdrCapacityMin": 0,
|
||||
"offsetHdr": [
|
||||
0.015625,
|
||||
0.015625,
|
||||
0.015625
|
||||
],
|
||||
"offsetSdr": [
|
||||
0.015625,
|
||||
0.015625,
|
||||
0.015625
|
||||
]
|
||||
}
|
After Width: | Height: | Size: 80 KiB |
|
@ -0,0 +1,28 @@
|
|||
<script setup lang="ts">
|
||||
import { onMounted } from 'vue';
|
||||
|
||||
import { PMREMGenerator } from 'three';
|
||||
import { GainMapLoader } from '@monogrid/gainmap-js'
|
||||
import { useTresContext } from '@tresjs/core';
|
||||
|
||||
import hdr_gainmap from '../../assets/promo/hdr/hdr-gainmap.webp'
|
||||
import hdr_json from '../../assets/promo/hdr/hdr.json'
|
||||
import hdr_webp from '../../assets/promo/hdr/hdr.webp'
|
||||
|
||||
const { renderer, scene } = useTresContext()
|
||||
|
||||
onMounted(async () => {
|
||||
const pmremGenerator = new PMREMGenerator(renderer.value);
|
||||
pmremGenerator.compileEquirectangularShader();
|
||||
|
||||
const loader = new GainMapLoader(renderer.value)
|
||||
const result = await loader.loadAsync([hdr_webp, hdr_gainmap, '/src/assets/promo/hdr/hdr.json',])
|
||||
|
||||
const exrCubeRenderTarget = pmremGenerator.fromEquirectangular(result.renderTarget.texture);
|
||||
const exrBackground = exrCubeRenderTarget.texture;
|
||||
const newEnvMap = exrCubeRenderTarget ? exrCubeRenderTarget.texture : null;
|
||||
scene.value.environment = newEnvMap
|
||||
scene.value.background = exrBackground
|
||||
result.renderTarget.texture.dispose();
|
||||
})
|
||||
</script>
|
|
@ -39,6 +39,7 @@ onMounted(async () => {
|
|||
x: Math.random() * (width - radius * 2) + radius,
|
||||
y: Math.random() * (height - radius * 2) + radius,
|
||||
}));
|
||||
|
||||
if (document.querySelector('.pin')) {
|
||||
const rect = (document.querySelector('.pin') as HTMLElement).getBoundingClientRect()
|
||||
circles[circles.length - 1] = { x: rect.x + rect.width, y: rect.y + rect.height }
|
||||
|
|
|
@ -1,9 +1,12 @@
|
|||
<script setup lang="ts">
|
||||
import { reactive, ref } from 'vue';
|
||||
import { Object3D, Vector3 } from 'three';
|
||||
import { Color, Vector3 } from 'three';
|
||||
|
||||
import { TresCanvas, useRenderLoop } from '@tresjs/core';
|
||||
import { CameraControls, useGLTF, useProgress } from '@tresjs/cientos'
|
||||
|
||||
import Env from './env.vue'
|
||||
|
||||
const minPan = new Vector3(-10, 1, -5);
|
||||
const maxPan = new Vector3(5, 1, 5);
|
||||
const _v = new Vector3();
|
||||
|
@ -26,56 +29,28 @@ const controlsState = reactive({
|
|||
})
|
||||
|
||||
const { hasFinishLoading, progress } = await useProgress()
|
||||
const { scene: spot_light } = await useGLTF('/spot_light.glb')
|
||||
const spot_light_item = spot_light.children[0]
|
||||
const spot_light_target = ref()
|
||||
|
||||
const target = new Object3D()
|
||||
target.translateX(-10)
|
||||
target.translateZ(10)
|
||||
target.translateY(0)
|
||||
|
||||
const { onLoop } = useRenderLoop()
|
||||
let step = 0.05
|
||||
onLoop(() => {
|
||||
if (spot_light_target.value) {
|
||||
const px = spot_light_target.value.position.x
|
||||
if (px >= 10) {
|
||||
step = -0.05
|
||||
} else if (px <= -10) {
|
||||
step = 0.05
|
||||
}
|
||||
spot_light_target.value.translateX(step)
|
||||
}
|
||||
const point_light = reactive({
|
||||
intensity: 10000,
|
||||
position: new Vector3(-100,5,5),
|
||||
})
|
||||
|
||||
const audio_played = ref<boolean>(false)
|
||||
const audio = new Audio('/sea.ogg')
|
||||
const playAudio = () => {
|
||||
if (!audio_played.value) {
|
||||
audio_played.value = true
|
||||
audio.play()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<template>
|
||||
<div :class="[{ 'invisible': !!hasFinishLoading }, 'loader']">
|
||||
Загрузка {{ progress }}%
|
||||
</div>
|
||||
<div :class="[{ 'invisible': !hasFinishLoading }]" @click="playAudio">
|
||||
<TresCanvas window-size alpha shadows clear-color="#87ceeb">
|
||||
<div :class="[{ 'invisible': !hasFinishLoading }]">
|
||||
<TresCanvas window-size>
|
||||
<TresPerspectiveCamera :position="cameraPosition" />
|
||||
<CameraControls v-bind="controlsState" @change="onChange" make-default />
|
||||
|
||||
<!-- <TresGridHelper :args="[50, 50]" /> -->
|
||||
<Suspense>
|
||||
<Models />
|
||||
<Env />
|
||||
</Suspense>
|
||||
<TresObject3D ref="spot_light_target" :position="[10, 1, 10]"></TresObject3D>
|
||||
<TresSpotLight :position="spot_light_item.position" color="pink" :angle="spot_light_item.angle"
|
||||
:penumbra="spot_light_item.penumbra" :target="spot_light_target || target" :intensity="500"
|
||||
cast-shadow />
|
||||
<!-- <TresDirectionalLight :position="lightPosition" :intensity="10" cast-shadow /> -->
|
||||
<TresMesh>
|
||||
<TresBoxGeometry :args="[1, 1, 1]" />
|
||||
<TresMeshStandardMaterial />
|
||||
</TresMesh>
|
||||
<TresPointLight v-bind="point_light" />
|
||||
<TresAmbientLight :intensity="1" />
|
||||
</TresCanvas>
|
||||
</div>
|
||||
|
|
|
@ -28,6 +28,21 @@ files = [
|
|||
{file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crispy-bootstrap4"
|
||||
version = "2024.1"
|
||||
description = "Bootstrap4 template pack for django-crispy-forms"
|
||||
optional = false
|
||||
python-versions = ">=3.8"
|
||||
files = [
|
||||
{file = "crispy-bootstrap4-2024.1.tar.gz", hash = "sha256:208673bf6a25892a656971af7a00e18ba2f7f06cd4a0d667923bd6134e64d276"},
|
||||
{file = "crispy_bootstrap4-2024.1-py3-none-any.whl", hash = "sha256:46cf98777a28621d240bf71eb36d4a26ff86e9e19be1cfd822645f4043d18c31"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
django = ">=4.2"
|
||||
django-crispy-forms = ">=2.0"
|
||||
|
||||
[[package]]
|
||||
name = "django"
|
||||
version = "5.0.6"
|
||||
|
@ -63,6 +78,34 @@ files = [
|
|||
asgiref = ">=3.6"
|
||||
Django = ">=3.2"
|
||||
|
||||
[[package]]
|
||||
name = "django-crispy-forms"
|
||||
version = "2.2"
|
||||
description = "Best way to have Django DRY forms"
|
||||
optional = false
|
||||
python-versions = ">=3.8"
|
||||
files = [
|
||||
{file = "django_crispy_forms-2.2-py3-none-any.whl", hash = "sha256:a681cffd5af270b3082bda02cf8f81bdb5717ed66d2265e87e3df2f4ccf46277"},
|
||||
{file = "django_crispy_forms-2.2.tar.gz", hash = "sha256:92cb7b7786fb82646bad739343fd17a99a04b0b736a09e34f3b91f26cbca7e4a"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
django = ">=4.2"
|
||||
|
||||
[[package]]
|
||||
name = "django-filter"
|
||||
version = "24.2"
|
||||
description = "Django-filter is a reusable Django application for allowing users to filter querysets dynamically."
|
||||
optional = false
|
||||
python-versions = ">=3.8"
|
||||
files = [
|
||||
{file = "django-filter-24.2.tar.gz", hash = "sha256:48e5fc1da3ccd6ca0d5f9bb550973518ce977a4edde9d2a8a154a7f4f0b9f96e"},
|
||||
{file = "django_filter-24.2-py3-none-any.whl", hash = "sha256:df2ee9857e18d38bed203c8745f62a803fa0f31688c9fe6f8e868120b1848e48"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
Django = ">=4.2"
|
||||
|
||||
[[package]]
|
||||
name = "djangorestframework"
|
||||
version = "3.15.1"
|
||||
|
@ -392,4 +435,4 @@ files = [
|
|||
[metadata]
|
||||
lock-version = "2.0"
|
||||
python-versions = "^3.10"
|
||||
content-hash = "1c57908ec6786460241b91a63e9b1e30eb78d340264c8e798eaa35041f9bc9f6"
|
||||
content-hash = "93e081c4ed6854ed0592157a7472a8bd4ba0c9e74831fce9e72d9f73c438f0d7"
|
||||
|
|
|
@ -17,6 +17,9 @@ python-dotenv = "^1.0.1"
|
|||
psycopg2 = "^2.9.9"
|
||||
opencv-python = "^4.9.0.80"
|
||||
potracer = "^0.0.4"
|
||||
django-filter = "^24.2"
|
||||
django-crispy-forms = "^2.2"
|
||||
crispy-bootstrap4 = "^2024.1"
|
||||
|
||||
|
||||
[build-system]
|
||||
|
|