🚀 Auto-deploy: BrainWind atualizado em 30/07/2026 10:29:57

This commit is contained in:
2026-07-30 10:29:57 +00:00
parent a30125c7ce
commit dc90b289c5
5 changed files with 19 additions and 21 deletions
+1 -1
View File
@@ -113,7 +113,7 @@ function BridgeModel({
/> />
<Text <Text
position={[-halfL * 0.8, deckY + 1.5, -halfW - 4]} position={[-halfL * 0.8, deckY + 1.5, -halfW - 4]}
rotation={[0, Math.PI / 4, 0]} rotation={[0, Math.PI, 0]}
fontSize={1.2} fontSize={1.2}
color={isDark ? '#60a5fa' : '#3b82f6'} color={isDark ? '#60a5fa' : '#3b82f6'}
anchorX="center" anchorX="center"
+2 -2
View File
@@ -170,7 +170,7 @@ function IsolatedRoofModel({
</group> </group>
<Text <Text
position={[0, centerY + 1.2, -halfDepth - 3.5]} position={[0, centerY + 1.2, -halfDepth - 3.5]}
rotation={[0, -3 * Math.PI / 4, 0]} rotation={[0, Math.PI, 0]}
fontSize={1.2} fontSize={1.2}
color="#3b82f6" color="#3b82f6"
anchorX="center" anchorX="center"
@@ -260,7 +260,7 @@ function IsolatedRoofModel({
{/* Rótulo Superior */} {/* Rótulo Superior */}
<Text <Text
position={[0, centerY + 3, 0]} position={[0, centerY + 3, 0]}
rotation={[0, -3 * Math.PI / 4, 0]} rotation={[0, Math.PI, 0]}
fontSize={Math.max(0.4, width / 15)} fontSize={Math.max(0.4, width / 15)}
color={textColor} color={textColor}
anchorX="center" anchorX="center"
+10 -13
View File
@@ -1,6 +1,3 @@
import React, { useRef } from 'react';
import * as THREE from 'three';
import { useFrame } from '@react-three/fiber';
import { Text, Grid, Environment } from '@react-three/drei'; import { Text, Grid, Environment } from '@react-three/drei';
import { WindArrow as GlobalWindArrow } from './WindArrow'; import { WindArrow as GlobalWindArrow } from './WindArrow';
import { ViewerOrbitControls as OrbitControls } from './ViewerOrbitControls'; import { ViewerOrbitControls as OrbitControls } from './ViewerOrbitControls';
@@ -35,7 +32,7 @@ function ShelterModel({
rightClosure, rightClosure,
openingPos, openingPos,
backRange, backRange,
windAngle = 0, windAngle: _windAngle = 0,
viewMode, viewMode,
}: Shelter3DProps) { }: Shelter3DProps) {
const isElevation = viewMode === 'elevation'; const isElevation = viewMode === 'elevation';
@@ -135,15 +132,15 @@ function ShelterModel({
{/* Seta de Vento Global (Sempre visível para não pular de posição) */} {/* Seta de Vento Global (Sempre visível para não pular de posição) */}
<group> <group>
<GlobalWindArrow <GlobalWindArrow
target={[-halfW * 1.2, height * 1.5 - 1.5, -halfD - 5 + 2]} target={[0, height * 1.5 - 1.5, -halfD - 8 + 2]}
direction={[0, 0, 1]} direction={[0, 0, 1]}
scale={4} scale={3.2}
/> />
<Text <Text
position={[-halfW * 1.2, height * 1.5, -halfD - 5]} position={[0, height * 1.5, -halfD - 8]}
rotation={[0, Math.PI / 4, 0]} rotation={[0, Math.PI, 0]}
fontSize={1.2} fontSize={0.96}
color={isDark ? '#60a5fa' : '#3b82f6'} color={isDark ? '#60a5fa' : '#2563eb'}
anchorX="center" anchorX="center"
anchorY="bottom" anchorY="bottom"
> >
@@ -166,13 +163,13 @@ function ShelterModel({
{/* Textos Informativos 3D - Virados para quem olha da frente (-Z) */} {/* Textos Informativos 3D - Virados para quem olha da frente (-Z) */}
{!isAirflow && ( {!isAirflow && (
<> <>
<Text position={[0, height + slopeRise + 1.2, 0]} rotation={[0, Math.PI, 0]} fontSize={0.45} color="#e2e8f0"> <Text position={[0, height + slopeRise + 1.4, 0]} rotation={[0, Math.PI, 0]} fontSize={0.45} color={isDark ? '#f8fafc' : '#0f172a'}>
{isElevation ? 'CORTE A-A (Elevação)' : 'Abrigo / Pórtico (NBR 6123)'} {isElevation ? 'CORTE A-A (Elevação)' : 'Abrigo / Pórtico (NBR 6123)'}
</Text> </Text>
<Text position={[0, height + slopeRise + 0.5, 0]} rotation={[0, Math.PI, 0]} fontSize={0.32} color="#f43f5e"> <Text position={[0, height + slopeRise + 0.6, 0]} rotation={[0, Math.PI, 0]} fontSize={0.51} color={isDark ? '#ff4d6d' : '#b91c1c'}>
Arrancamento [+Fz ] Arrancamento [+Fz ]
</Text> </Text>
<Text position={[0, height * 0.5, halfD + 1.2]} rotation={[0, Math.PI, 0]} fontSize={0.32} color="#fb923c"> <Text position={[0, height * 0.5, halfD + 1.2]} rotation={[0, Math.PI, 0]} fontSize={0.51} color={isDark ? '#ff9f43' : '#c2410c'}>
Empuxo no Fundo [+Fx ] Empuxo no Fundo [+Fx ]
</Text> </Text>
</> </>
@@ -13,7 +13,7 @@ export interface SignAirflowSystemProps {
export function SignAirflowSystem({ length, height, groundClearance, alpha, cf }: SignAirflowSystemProps) { export function SignAirflowSystem({ length, height, groundClearance, alpha, cf }: SignAirflowSystemProps) {
const isDark = useCanvasTheme() === 'dark'; const isDark = useCanvasTheme() === 'dark';
const count = 350; const count = 175;
const meshRef = useRef<THREE.InstancedMesh>(null); const meshRef = useRef<THREE.InstancedMesh>(null);
const baseY = groundClearance; const baseY = groundClearance;
const topY = baseY + height; const topY = baseY + height;
@@ -34,7 +34,7 @@ export function SignAirflowSystem({ length, height, groundClearance, alpha, cf }
Math.random() * (topY * 1.6), Math.random() * (topY * 1.6),
(Math.random() - 0.5) * limitZ * 2 (Math.random() - 0.5) * limitZ * 2
), ),
baseSpeed: 0.12 + Math.random() * 0.08, baseSpeed: 0.06 + Math.random() * 0.04,
wobbleSpeed: Math.random() * 0.05, wobbleSpeed: Math.random() * 0.05,
wobbleOffset: Math.random() * Math.PI * 2, wobbleOffset: Math.random() * Math.PI * 2,
currentCpe: 0, currentCpe: 0,
+4 -3
View File
@@ -210,13 +210,13 @@ function TowerModel({
{isAirflow ? ( {isAirflow ? (
<group> <group>
<WindArrow <WindArrow
target={[-baseWidth * 1.5, height / 2, -baseWidth * 1.5]} target={[0, height / 2, -baseWidth * 1.5]}
direction={[0, 0, 1]} direction={[0, 0, 1]}
scale={4} scale={4}
/> />
<Text <Text
position={[-baseWidth * 1.5, height / 2 + 1.5, -baseWidth * 1.5 - 2]} position={[0, height / 2 + 1.5, -baseWidth * 1.5 - 2]}
rotation={[0, Math.PI / 4, 0]} rotation={[0, Math.PI, 0]}
fontSize={1.2} fontSize={1.2}
color={isDark ? '#60a5fa' : '#3b82f6'} color={isDark ? '#60a5fa' : '#3b82f6'}
anchorX="center" anchorX="center"
@@ -240,6 +240,7 @@ function TowerModel({
</mesh> </mesh>
<Text <Text
position={[0, height + 1.0, 0]} position={[0, height + 1.0, 0]}
rotation={[0, Math.PI, 0]}
fontSize={0.5} fontSize={0.5}
color={isDark ? "#93c5fd" : "#1e40af"} color={isDark ? "#93c5fd" : "#1e40af"}
anchorX="center" anchorX="center"