Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.03.2023, 17:25
Аватар для Prohozhij
Новичок на форуме
Отправить личное сообщение для Prohozhij Посмотреть профиль Найти все сообщения от Prohozhij
 
Регистрация: 09.03.2023
Сообщений: 3

Почему не удаётся загрузить текстуру управляемого куба с компьютера?
Измучился пробовать, но так и не нашёл почему не грузится с компьютера текстура, только из сети.

Если посетителей будет много, подчищу код. А пока, извините,не заметил, что черновик.

Можно поиграться с кубиком всеми кнопками и колёсиком мыши:
лев. Вращает, колесо приближает, правая переносит в сторону.

Буду благодарен тем , кто попробует у себя вставлять имя файла вместо URL текстуры и расскажет о результате.

<!DOCTYPE html>
<html>
<head>
	<!meta charset="utf-8">
	<title>Текстура куба</title>
	<style>
		body {
			margin: 0;
			overflow: hidden;
		}
		canvas {
			width: 100%;
			height: 100%;
		}
	</style>
</head>
<body>
	<script src="https://cdn.jsdelivr.net/npm/three@0.128.0/build/three.min.js"></script>
	<script src="https://cdn.jsdelivr.net/npm/three@0.128.0/examples/js/controls/OrbitControls.js"></script>
	
	<script> 
	let tt=" колесо=размер /  "
	document.write("левой крутить можно,",tt,  " правой сдвинуть" ) ;
	let scene = new THREE.Scene();
	 let camera = new THREE.PerspectiveCamera(15,  window.innerWidth/window.innerHeight, 0.1, 1000);//размер куба колёсиком / 0.5
		camera.position.set(0, 0, 5);// вбухать сюда цикл и менять положение камеры, увеличить куб-колёсиком!

		let renderer = new THREE.WebGLRenderer();
		renderer.setSize(window.innerWidth, window.innerHeight);
		document.body.appendChild(renderer.domElement);

		let controls = new THREE.OrbitControls(camera, renderer.domElement);

		let textureLoader = new THREE.TextureLoader();
		let texture1 = textureLoader.load('https://upload.wikimedia.org/wikipedia/commons/thumb/d/d2/An_example_of_texture.jpg/120px-An_example_of_texture.jpg?20100414131741'); // Вот здесь надо пробовать вставить название файла картинки
		let texture2 = textureLoader.load('https://upload.wikimedia.org/wikipedia/commons/thumb/d/d2/An_example_of_texture.jpg/800px-An_example_of_texture.jpg?20100414131741');
		//let texture = textureLoader.load('https://upload.wikimedia.org/wikipedia/commons/thumb/d/d2/An_example_of_texture.jpg/120px-An_example_of_texture.jpg?20100414131741');
		//https://upload.wikimedia.org/wikipedia/commons/thumb/d/d2/An_example_of_texture.jpg/800px-An_example_of_texture.jpg?20100414131741');
		//https://www.meme-arsenal.com/memes/c22378ade797ced2cc3011f0fa456937.jpg');//textures/colorPI.jpgэту ссылку поменять (работает только из сети)
//setTimeout(() =>  animate  , 1000, 'Привет' , 'Привет2');
		let texture ;  
		  //let geometry ;= new THREE.BoxGeometry();
		 let material  
		//let cube ;= new THREE.Mesh(geometry, material);
		function mate( ) {
		   tt = "крутить";}
			 
		  texture = texture1; 
		let geometry = new THREE.BoxGeometry();
		  material = new THREE.MeshBasicMaterial({map: texture});
		let cube = new THREE.Mesh(geometry, material);
		scene.add(cube);
		
		 
		
//setTimeout(()=>", 5000 , "Привет");document.write(tt);

 //let material = new THREE.MeshBasicMaterial({map: texture});
		function animate() {
			requestAnimationFrame(animate);
			cube.rotation.x += 0.0011;
			cube.rotation.y += 0.0011;
			renderer.render(scene, camera);
		}
		 tt="всеми кнопками мыши двигать ";
		texture = texture2;
		 mate(tt);
		animate();
		
				//alert(tt); 
				 tt=tt+ " и колёсиком";
		//alert(tt);
	</script>
</body>
</html>

Последний раз редактировалось Prohozhij, 10.03.2023 в 00:49. Причина: делаю код скрытым- великоват
Ответить с цитированием
  #2 (permalink)  
Старый 09.03.2023, 22:54
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,750

Там возникает ошибка CORS
Access to image at '????_texture.jpg' from origin 'null' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, isolated-app, chrome-extension, chrome, https, chrome-untrusted.

Библиотека считывает картинку в элемент IMG с параметром crossorigin="anonymous" Если сервер, с которого считывается картинка не предоставит требуемые заголовки, то доступ к такой картинке будет ограничен.
https://developer.mozilla.org/ru/doc...tr-crossorigin
Но при считывании локальной картинки никакого сервера нет. Поэтому нет и заголовков.
Ответить с цитированием
  #3 (permalink)  
Старый 09.03.2023, 23:05
Новичок на форуме
Отправить личное сообщение для IamAnton Посмотреть профиль Найти все сообщения от IamAnton
 
Регистрация: 25.12.2022
Сообщений: 9

Есть способ запустить Three.js локально. Я пробовал - работает. https://customizer.github.io/three.j...hree.js-ru.htm
Ответить с цитированием
  #4 (permalink)  
Старый 09.03.2023, 23:21
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,750

Сообщение от IamAnton
Есть способ запустить Three.js локально. Я пробовал - работает.
Не спорю. Но для этого надо менять политику безопасности в браузере.
Конкретно для себя любимого это можно сделать. Но в общем случае это плохой "выход".
Ответить с цитированием
  #5 (permalink)  
Старый 10.03.2023, 00:42
Аватар для Prohozhij
Новичок на форуме
Отправить личное сообщение для Prohozhij Посмотреть профиль Найти все сообщения от Prohozhij
 
Регистрация: 09.03.2023
Сообщений: 3

Благодарю, что откликнулись и дали исчерпывающие ответы
Сообщение от voraa Посмотреть сообщение
Не спорю. Но для этого надо менять политику безопасности в браузере.
Конкретно для себя любимого это можно сделать. Но в общем случае это плохой "выход".
Вот-вот, локально мне для себя только и надо.
Сейчас оказалось не найти , даже, места, где свои фотки разместить, чтобы забирались по ссылке(Гугл фото не позволяет это делать).
И как корректно загрузить себе эти библиотеки, я их просто копировал с ХТМЛ странички. Так исказились или можно пробовать и будут работать?
Ответить с цитированием
  #6 (permalink)  
Старый 10.03.2023, 07:16
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,750

Сообщение от Prohozhij
И как корректно загрузить себе эти библиотеки,
Библиотеки можно и с сервера грузить.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузить картинку с компьютера в браузер минуя сервер Mахmахmахimus Общие вопросы Javascript 2 20.02.2012 08:13