bx-865-apps #1

Merged
ksenia_mikhailova merged 140 commits from bx-865-apps into main 2024-06-27 15:03:27 +03:00
32 changed files with 228 additions and 70 deletions
Showing only changes of commit 1cc5599624 - Show all commits

View File

@ -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": {}
},

View File

@ -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,

View File

@ -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]

View File

@ -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']

View File

@ -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",

View File

@ -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",

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.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -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
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

View File

@ -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>

View File

@ -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 }

View File

@ -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>

45
poetry.lock generated
View File

@ -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"

View File

@ -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]