bx-1379-redesign #15

Merged
ksenia_mikhailova merged 124 commits from bx-1379-redesign into dev 2024-09-06 15:39:13 +03:00
4 changed files with 40 additions and 13 deletions
Showing only changes of commit 78896b55a4 - Show all commits

View File

@ -54,9 +54,8 @@ a[href] {
&-canvas { &-canvas {
flex-grow: 1; flex-grow: 1;
height: 50vh; height: 100vh;
width: 100vw; z-index: -1;
max-height: 65vh;
} }
} }

View File

@ -17,12 +17,12 @@ const controls = ref()
const controlsState = reactive({ const controlsState = reactive({
enableDamping: true, enableDamping: true,
minPolarAngle: 45 * (Math.PI / 180), minPolarAngle: 66 * (Math.PI / 180),
maxPolarAngle: 45 * (Math.PI / 180), maxPolarAngle: 66 * (Math.PI / 180),
// minAzimuthAngle: (Math.PI / 2) / 2, // minAzimuthAngle: (Math.PI / 2) / 2,
enablePan: false, enablePan: false,
enableZoom: false, enableZoom: false,
autoRotate: true, // autoRotate: true,
}) })
await pageStore.load(route.params) await pageStore.load(route.params)
await raw_dataStore.load({ source: pageStore.page.scene_3d }) await raw_dataStore.load({ source: pageStore.page.scene_3d })
@ -42,7 +42,7 @@ onMounted(async () => {
</p> </p>
</div> </div>
<div class="main-canvas"> <div class="main-canvas">
<TresCanvas :output-encoding="SRGBColorSpace" > <TresCanvas window-size :output-encoding="SRGBColorSpace" >
<TresPerspectiveCamera ref="camera" /> <TresPerspectiveCamera ref="camera" />
<OrbitControls v-bind="controlsState" make-default ref="controls" /> <OrbitControls v-bind="controlsState" make-default ref="controls" />
<MainLoadModels v-if="raw_dataStore.data.id" /> <MainLoadModels v-if="raw_dataStore.data.id" />

View File

@ -50,8 +50,8 @@ const cameraSet = () => {
(controls.value as any).update() (controls.value as any).update()
} }
if (camera.value) { if (camera.value) {
const d = raw_dataStore.data.max_distance * 0.5; const d = raw_dataStore.data.max_distance * 0.75;
camera.value.position.set(d * 0.25, d * 0.5, d); camera.value.position.set(d * 0.25, d, d);
camera.value.updateMatrixWorld() camera.value.updateMatrixWorld()
} }
} }
@ -59,7 +59,9 @@ loadModels()
cameraSet() cameraSet()
const { onAfterRender } = useLoop() const { onAfterRender } = useLoop()
onAfterRender(() => { onAfterRender(() => {
(controls.value as any).update() if (controls.value) {
(controls.value as any).update()
}
}) })
</script> </script>
<template> <template>

View File

@ -1,7 +1,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { onMounted, render, watch } from 'vue'; import { onMounted, render, watch } from 'vue';
import { ACESFilmicToneMapping, Color, Fog, PMREMGenerator, SRGBColorSpace } from 'three'; import { ACESFilmicToneMapping, CanvasTexture, Color, Fog, PMREMGenerator, SRGBColorSpace } from 'three';
import { GainMapLoader } from '@monogrid/gainmap-js' import { GainMapLoader } from '@monogrid/gainmap-js'
import { useTresContext } from '@tresjs/core'; import { useTresContext } from '@tresjs/core';
@ -10,7 +10,11 @@ import hdr_json from '../../assets/promo/hdr/hdr.json?url'
import hdr_webp from '../../assets/promo/hdr/hdr.webp' import hdr_webp from '../../assets/promo/hdr/hdr.webp'
import { IMAGE_URL, PROMOBG } from '../../constants'; import { IMAGE_URL, PROMOBG } from '../../constants';
const props = defineProps(['hdr_webp', 'hdr_gainmap', 'hdr_json', 'env_displacementmap', 'env_normalmap', 'clear_color', 'focus']) const props = defineProps([
'hdr_webp', 'hdr_gainmap', 'hdr_json',
'clear_color', 'clear_color_to',
'focus'
])
const { renderer, scene } = useTresContext() const { renderer, scene } = useTresContext()
const k = { start: 0.5, end: 4.5 } const k = { start: 0.5, end: 4.5 }
@ -20,7 +24,6 @@ renderer.value.toneMapping = ACESFilmicToneMapping;
renderer.value.toneMappingExposure = 1.25; renderer.value.toneMappingExposure = 1.25;
renderer.value.setPixelRatio((window.devicePixelRatio || 1) * 2) renderer.value.setPixelRatio((window.devicePixelRatio || 1) * 2)
const type = 'canvas'
const loadEnv = async () => { const loadEnv = async () => {
try { try {
const loader = new GainMapLoader(renderer.value) const loader = new GainMapLoader(renderer.value)
@ -50,6 +53,29 @@ const loadEnv = async () => {
scene.value.fog = new Fog(c, props.focus * k.start, props.focus * k.end) scene.value.fog = new Fog(c, props.focus * k.start, props.focus * k.end)
document.documentElement.style.setProperty('--primary-color', props.clear_color) document.documentElement.style.setProperty('--primary-color', props.clear_color)
if (props.clear_color_to) {
const c_to = new Color()
c_to.set(props.clear_color_to)
const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');
const s = 100
canvas.width = s;
canvas.height = s;
if (ctx instanceof CanvasRenderingContext2D) {
const grad = ctx.createLinearGradient(0, 0, 0, s);
grad.addColorStop(0, props.clear_color);
grad.addColorStop(1, props.clear_color_to);
console.log(props.clear_color, props.clear_color_to)
ctx.fillStyle = grad;
ctx.fillRect(0, 0, s, s);
}
const texture = new CanvasTexture(canvas)
texture.needsUpdate = true
scene.value.background = texture
console.log(canvas.toDataURL())
}
} }
loadEnv() loadEnv()