Javascript.RU

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

[Help] Интеграция php переменной в javascript
Здравствуйте уважаемые форумчане! Если вам не трудно уделить парочку минут своего времени моей проблеме, то помогите пожалуйста

Я делаю свой сайт на тему игры Minecraft
И занимаясь личным кабинетом пользователя я нашел скрип, который в 3d выводит скин игрока. Сам скрипт сделан с помощью библиотеки Three.js
Идея мне очень понравилась, но выполнена не очень.
Скрипт работает по такому принципу:
Он скачивает файл скина с указанного адреса
Потом разбивает его на составные части и сохраняет в свою папку
Ну и далее просто вставляет эти части в модель и получается 3d изображение

Эта схема мене не нравится, так как при обновлении скина придется заново повторять всю процедуру, и сами разбитые скины будут весить очень много

И я решил сделать все через php переменную изображения. Сам код, создающий изображение я написал, но как вставить его как текстуру мне непонятно

Прошу вашей помощи

Ну и вот сами файлики:
Основной index.php
<!--
3-D Minecraft Skin Viewer
By Kent Rasmussen @ earthiverse.ath.cx
Using Three.Js HTML5 3D Engine from https://github.com/mrdoob/three.js/
Add ?user=USERNAME to render a specific username
Add &refresh to re-grab the skin and generate new parts
Add &webgl to render in webgl
-->
<?php 
include('backend/backend.php');
include('config.php');
include('backend/skin_beta.php');
if(!isset($user)) $user = 'earthiverse';
if(isset($refresh)) minecraft_skin_delete($user);
minecraft_skin_download($user);

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript" src="backend/resources/3d/Three.js"></script>
<script type="text/javascript" src="backend/resources/3d/Cube.js"></script>
<script type="text/javascript" src="backend/resources/3d/ImageUtils.js"></script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="style.css" rel="stylesheet" type="text/css" />
<title>3d minecraft body test v1.0</title>
</head>

<body>
<script type="text/javascript">
 var camera, scene, renderer;
 init();
 setInterval( loop, 1000 / 60 );
 function init() {
  camera = new THREE.Camera(20, window.innerWidth / window.innerHeight, 1, 1000);
  scene = new THREE.Scene();

  var head_materials = [new THREE.MeshBasicMaterial({map:ImageUtils.loadTexture('Место для текстуры')}),new THREE.MeshBasicMaterial({map:ImageUtils.loadTexture('images/skins/<?php echo $user; ?>/head_left.png')}),new THREE.MeshBasicMaterial({map:ImageUtils.loadTexture('images/skins/<?php echo $user; ?>/head_top.png')}),new THREE.MeshBasicMaterial({map:ImageUtils.loadTexture('images/skins/<?php echo $user; ?>/head_bottom.png')}),new THREE.MeshBasicMaterial({map:ImageUtils.loadTexture('images/skins/<?php echo $user; ?>/head_back.png')}),new THREE.MeshBasicMaterial({map:ImageUtils.loadTexture('images/skins/<?php echo $user; ?>/head_front.png')})];

  head = new THREE.Mesh( new Cube(8, 8, 8, 1, 1, head_materials), new THREE.MeshFaceMaterial());
  head.position.x = 0;
  head.position.y = 0;
  head.position.z = 0;
  scene.addObject(head);

  <?php if(isset($_GET['webgl'])) echo 'renderer = new THREE.WebGLRenderer();'; else echo 'renderer = new THREE.CanvasRenderer();'; ?>

  renderer.setSize( window.innerWidth, window.innerHeight );
  document.body.appendChild( renderer.domElement );
 }
 var xvar = 0;
 function loop() {
  xvar += Math.PI/90
  camera.target.position.x = 0;
  camera.target.position.y = -11;
  camera.target.position.z = 0;

  //Leg Swing
  leg_left.rotation.x = Math.cos(xvar);
  leg_left.position.z = 0 - 6*Math.sin(leg_left.rotation.x);
  leg_left.position.y = -16 - 6*Math.abs(Math.cos(leg_left.rotation.x));
  leg_right.rotation.x = Math.cos(xvar + (Math.PI));
  leg_right.position.z = 0 - 6*Math.sin(leg_right.rotation.x);
  leg_right.position.y = -16 - 6*Math.abs(Math.cos(leg_right.rotation.x));
  
  //Arm Swing
  arm_left.rotation.x = Math.cos(xvar + (Math.PI));
  arm_left.position.z = 0 - 6*Math.sin(arm_left.rotation.x);
  arm_left.position.y = -4 - 6*Math.abs(Math.cos(arm_left.rotation.x));
  arm_right.rotation.x = Math.cos(xvar);
  arm_right.position.z = 0 - 6*Math.sin(arm_right.rotation.x);
  arm_right.position.y = -4 - 6*Math.abs(Math.cos(arm_right.rotation.x));

  camera.position.x = 0 - 100*Math.sin(xvar);
  camera.position.y = 0 - 30*Math.sin(xvar);
  camera.position.z = 0 - 100*Math.cos(xvar);
  renderer.render( scene, camera );
 }
</script>

</body>
</html>

Ну и сам файл, создающий изображение skin_beta.php
<?php
$im = imagecreatefrompng("http://s3.amazonaws.com/MinecraftSkins/yura29.png");
$face = imagecreatetruecolor ( 8 , 8 );

imagecopy ( $face , $im , 0 , 0 , 8 , 8 ,8 , 8 );

imagepng($face);
imagedestroy($face);
?>


Заранее благодарен))
Ответить с цитированием
  #2 (permalink)  
Старый 18.08.2013, 00:16
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Много кода. Че нужно то, я не понял? Вкратце напиши.
Ответить с цитированием
  #3 (permalink)  
Старый 18.08.2013, 12:12
Интересующийся
Отправить личное сообщение для yura29 Посмотреть профиль Найти все сообщения от yura29
 
Регистрация: 17.08.2013
Сообщений: 17

На 38 строке есть текст 'Место для текстуры'
Туда нужно вывести текстуру в виде переменной $face из второго файла
Ответить с цитированием
  #4 (permalink)  
Старый 18.08.2013, 15:55
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Функция loadTexture принимает путь к файлу, так?
Значит нужно сохранить картинку $face в файл какой-нибудь и указать путь к нему. Либо попробовать вставить вместо пути к файлу data-uri:

'data:image/png,'.base64_encode($face)

Не факт что loadTexture примет такой URI
Ответить с цитированием
  #5 (permalink)  
Старый 18.08.2013, 17:19
Интересующийся
Отправить личное сообщение для yura29 Посмотреть профиль Найти все сообщения от yura29
 
Регистрация: 17.08.2013
Сообщений: 17

Попробовал через URI все исчезло и появилась ошибка
‰PNG  IHDRKm)ЬУIDAT™И7яJ)	ккм ьфшьсфцчццушьъыьмцЂkl	 чхупожћ¬¦¤}f цющпупбжЪ KzЊ\жьъKахcђ­–cF№БѕNB<диЫгйнфыэгдЮђўљ  Ќ ўнфчезйюююѕСНцчэыыъ VьУ)4IEND®B`‚


А на счет сохранения файла, то сам оригинал скрипта так и выполнен, но это крайне нежелательно
Ответить с цитированием
  #6 (permalink)  
Старый 18.08.2013, 17:43
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

А в браузере сформированный URI открывается нормально?
Ответить с цитированием
  #7 (permalink)  
Старый 18.08.2013, 17:49
Интересующийся
Отправить личное сообщение для yura29 Посмотреть профиль Найти все сообщения от yura29
 
Регистрация: 17.08.2013
Сообщений: 17

Ну в самом создающем скрипте я пробовал выводить картинку через imagepng($face); и всё работало

Заменив imagepng($face); на 'data:image/png,'.base64_encode($face) получил ошибку
Warning: base64_encode() expects parameter 1 to be string,
Ответить с цитированием
  #8 (permalink)  
Старый 18.08.2013, 17:56
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

http://stackoverflow.com/questions/8...tput-to-base64
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как значение переменной из javascript передать в php? mobiledeveloper Общие вопросы Javascript 1 02.05.2012 20:00
Интеграция php функций в javascript Master_Zu Серверные языки и технологии 4 04.04.2011 16:43
передача из php в javascript многострочной переменной smollvrn Общие вопросы Javascript 12 14.11.2010 20:38
Последние книги по JavaScript! monolithed Учебные материалы 7 26.10.2010 19:40
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 20:34