У меня есть сцена со всеми запеченными текстурами, которые используются посредством эмиссии материалов. Итак, в сцене нет освещения. При увеличении все выглядит нормально. Но когда я уменьшаю масштаб, края сетки становятся серыми. Я пытался включить/отключить сглаживание, повозился с мип-маппингом, но ничего не улучшилось.
Есть идеи, почему это может быть?
Вот код JavaScript...
import * as THREE from 'three';
import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
import modelPath from './public/WineCheese_Spielszene_Baked_01.glb?url';
const scene = new THREE.Scene();
let camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );
const renderer = new THREE.WebGLRenderer( { antialias: true, alpha: true } );
renderer.setSize( window.innerWidth, window.innerHeight );
renderer.setPixelRatio( window.devicePixelRatio );
renderer.setAnimationLoop( animate );
document.body.appendChild( renderer.domElement );
let controls = new OrbitControls( camera, renderer.domElement );
controls.maxPolarAngle = Math.PI / 2; // Prevent rotation below horizon
// Handle window resize
window.addEventListener( 'resize', onWindowResize );
function onWindowResize() {
const width = window.innerWidth;
const height = window.innerHeight;
camera.aspect = width / height;
camera.updateProjectionMatrix();
renderer.setSize( width, height );
}
const loader = new GLTFLoader();
loader.load( modelPath, function ( gltf ) {
const model = gltf.scene;
scene.add( model );
// Hide loading animation
const loadingElement = document.getElementById( 'loading' );
loadingElement.classList.add( 'hidden' );
let usedGLBCamera = false;
// Use camera from GLB file if available and update its aspect ratio
if ( gltf.cameras.length > 0 ) {
camera = gltf.cameras[ 0 ];
// Store original properties from GLB file
const originalFOV = camera.fov;
const originalAspect = camera.aspect;
const focalLength = camera.getFocalLength();
// Only update aspect ratio, keep FOV as-is from GLB
camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix();
scene.add( camera );
controls.dispose();
controls = new OrbitControls( camera, renderer.domElement );
controls.maxPolarAngle = Math.PI / 2; // Prevent rotation below horizon
usedGLBCamera = true;
}
// Center the model
const box = new THREE.Box3().setFromObject( model );
const center = box.getCenter( new THREE.Vector3() );
const size = box.getSize( new THREE.Vector3() );
model.position.sub( center );
controls.target.set( 0, 0, 0 );
controls.update();
} );
function animate() {
controls.update();
renderer.render( scene, camera );
}
Подробнее здесь: https://stackoverflow.com/questions/798 ... ooming-out
Серые края при уменьшении масштаба ⇐ Javascript
Форум по Javascript
1769361100
Anonymous
У меня есть сцена со всеми запеченными текстурами, которые используются посредством эмиссии материалов. Итак, в сцене нет освещения. При увеличении все выглядит нормально. Но когда я уменьшаю масштаб, края сетки становятся серыми. Я пытался включить/отключить сглаживание, повозился с мип-маппингом, но ничего не улучшилось.
Есть идеи, почему это может быть?
Вот код JavaScript...
import * as THREE from 'three';
import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
import modelPath from './public/WineCheese_Spielszene_Baked_01.glb?url';
const scene = new THREE.Scene();
let camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );
const renderer = new THREE.WebGLRenderer( { antialias: true, alpha: true } );
renderer.setSize( window.innerWidth, window.innerHeight );
renderer.setPixelRatio( window.devicePixelRatio );
renderer.setAnimationLoop( animate );
document.body.appendChild( renderer.domElement );
let controls = new OrbitControls( camera, renderer.domElement );
controls.maxPolarAngle = Math.PI / 2; // Prevent rotation below horizon
// Handle window resize
window.addEventListener( 'resize', onWindowResize );
function onWindowResize() {
const width = window.innerWidth;
const height = window.innerHeight;
camera.aspect = width / height;
camera.updateProjectionMatrix();
renderer.setSize( width, height );
}
const loader = new GLTFLoader();
loader.load( modelPath, function ( gltf ) {
const model = gltf.scene;
scene.add( model );
// Hide loading animation
const loadingElement = document.getElementById( 'loading' );
loadingElement.classList.add( 'hidden' );
let usedGLBCamera = false;
// Use camera from GLB file if available and update its aspect ratio
if ( gltf.cameras.length > 0 ) {
camera = gltf.cameras[ 0 ];
// Store original properties from GLB file
const originalFOV = camera.fov;
const originalAspect = camera.aspect;
const focalLength = camera.getFocalLength();
// Only update aspect ratio, keep FOV as-is from GLB
camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix();
scene.add( camera );
controls.dispose();
controls = new OrbitControls( camera, renderer.domElement );
controls.maxPolarAngle = Math.PI / 2; // Prevent rotation below horizon
usedGLBCamera = true;
}
// Center the model
const box = new THREE.Box3().setFromObject( model );
const center = box.getCenter( new THREE.Vector3() );
const size = box.getSize( new THREE.Vector3() );
model.position.sub( center );
controls.target.set( 0, 0, 0 );
controls.update();
} );
function animate() {
controls.update();
renderer.render( scene, camera );
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79875820/grey-edges-when-zooming-out[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия