Показать сообщение отдельно
  #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);
?>


Заранее благодарен))
Ответить с цитированием