论坛

由用户创建的信息 quasarusol
19 September 2017 09:48
Решение:

  var fileInput = document.getElementById('fileInput');

 
    fileInput.addEventListener('change', function() {
    var file = fileInput.files[0];

    var img = new Image();
    img.onload = function() {
    ctx_image.drawImage(img, 0, 0, ctx_image.canvas.width, ctx_image.canvas.height);
    m_tex.update_canvas_ctx(imagePlane, "CubeTexture");
    }
    img.src = URL.createObjectURL(file);
    });
http://vg3d.ru
01 August 2017 11:09
Ответ на сообщение пользователя Иван Любовников
Если проблема та, о которой я думаю, то вам поможет пересчет координат: ссылка
- для нодовой логики это происходит автоматически.
Огромное спасибо, простите за мою невнимательность! Это то, что нужно
http://vg3d.ru
01 August 2017 08:32
Ответ на сообщение пользователя Дмитрий Пелевин
Ну тогда вам нужно координаты указателя мыши также скейлить.
Но вообще это неправильный, очень очень очень неправильный подход.

Лучше дожидаться окончания изменения размеров экрана и перемещать камеру в нужный чек пойнт, либо искать другие варианты. Скейл вам подкинет проблем еще в разных браузерах…

Ну скажем так, скейл работает во всех современных браузерах отлично. Мне этого достаточно. Да и другого выхода вроде, как нет для моей задачи.

Пока реализовал все через нодовую логику. Очень странно, но она работает корректно со скейлом. Я так понял это совершенно разные функции.

А кроме pick_object и лучей, есть еще способы выделения объектов?
http://vg3d.ru
31 July 2017 10:41
Поставьте канвас в контейнер и ресайзите его средствами CSS (`width:100%`). Если нужен фиксированный размер, так и ограничьте его также через CSS.

Вы меня немного не поняли) Мне нужно сделать так, что бы область охватываемая камерой была всегда неподвижна. Я с помощью этого скрипта задаю фиксированные пропорции канваса. Не размер, а пропорции. По этому даже при ресайзе окна браузера пропорции у канваса остаются такие же. Вот пример - https://playcanv.as/p/kx8rLnM1/

Понятно, что именно этот скрипт мешает работе pick_object.
http://vg3d.ru
30 July 2017 13:01
Да, при этом через нодовую логику все работает, как надо)
http://vg3d.ru
30 July 2017 12:45
Столкнулся с такой проблемой. Использую такой скрипт, для позиционирования канваса на странице:
onresize = function()
{
    var bodyWidth  = document.body.clientWidth
      , bodyHeight = document.body.clientHeight;
    var scalable = document.getElementById("main_canvas_container");
    scale = Math.min(bodyWidth / 1920, bodyHeight / 1080);
    
    scalable.style.top = (bodyHeight - (scalable.offsetHeight * scale)) / 2 + "px";
    scalable.style.left = (bodyWidth - (scalable.offsetWidth * scale)) / 2 + "px";
    scalable.style.webkitTransform = "scale(" + scale + ")";
}

onresize();


при этом коряво работает функция pick_object. Объекты плохо выделяются, те идет не соответствие фактического расположения объекта. Объект можно выделить только если кликнуть совсем в другую часть экрана. Я не очень понимаю, как работает функция pick_object по этому в замешательстве..
http://vg3d.ru
28 July 2017 15:46
Спасибо за ответы. Тогда такой вопрос. Могу ли я управлять второй сценой, пока запущена первая?
http://vg3d.ru
27 July 2017 21:13
Вообще ещё есть способ рендерить в текстуру - там вообще без скриншотов - возможно, вам подойдет.

Отличный вариант, но есть одно НО!) Как рендерить в текстуру из камеры в этой же сцены? Как это реализовали в приложении от nasa?
http://vg3d.ru
27 July 2017 08:23
Вот как-то так, например:


Спасибо, получилось. Но скорость оставляет желать лучшего… Хотел данным способом реализовать эффект перелистывания страниц. Суть заключалась в том, что бы по нажатию на интерфейсную кнопку делался скриншот и накладывался на ранее невидимую плоскость, которая в свою очередь анимирована, как перелистывающаяся страница.
А какими еще способами можно сделать скриншот канваса? Я знаю, что есть целый метод SCREENSHOTER Он вроде работает быстро. Можно ли как то его переделать под себя? Как я понял кроме функции shot он больше ничего не умеет?
http://vg3d.ru
26 July 2017 08:29
Доброго дня всем. Есть задача - сделать скриншот всего канваса и наложить полученное изображение как текстуру на объект. Полагаю надо копать в сторону canvas_data_url но не понимаю, как эта функция работает..
http://vg3d.ru