Forum

User posts Ivan Lyubovnikov
10 March 2016 19:24
Могу ли я рисовать простейшее через blend4web по средствам js, но без blender, н-р 2 линии со стрелками, указатели?

Можно, но для этого в сцене нужен один объект типа EMPTY, к которому привязывается линия (координаты точек линии нужно указывать в локальном пространстве EMPTY-объекта).
Посмотрите пример Lines в приложении Code Snippets - там это как раз используется.

P.S. Чтобы заработало, у EMPTY-объекта нужно выставить галочку Object->Rendering Properties->Line Renderer.
10 March 2016 11:42
it doesnt seem to work with the following call :
Hmm, it works for me like that and it seems correct for 1.63189 altitude:


Do you want to attach them to the ceiling more tightly?
09 March 2016 11:24
Hi! This looks like a bug. B4W supports constant, linear and bezier modes both in json and in html export.

B4W ERROR: Unknown keyframe intepolation mode: 9.986835479736328
This weird error shows that you have any other mode turned on or perhaps the animation is corrupted.

Is there a way to force type of interpolation in the export?
Unfortunately, there is not an easy way to do it. If you can provide us with blend-file we'll look at this issue.
04 March 2016 19:30
I read in a recent post that there is some discrepancy between Blender's camera and Blend4Web's camera. I have also observed this in a test I did.
Hmm, what post was it? It should only be a camera behavior model, which can lead to this discrepancy. In your test you have a target camera and its pivot is (0,0,0). That's why the camera view is not like in Blender. Besides, camera limits can also affect the position/orientation.

I don't understand the technical reasons for this, but today I thought it would be useful to have a tool in Blend4Web's Viewer for getting the camera's current Loc/Rot coordinates, and maybe putting them in the clipboard. Using this we would be able to align our camera in the Viewer and then plug those coordinates into Blender.
I think that it's not a convenient way. We should provide some supporting tools to align camera right in Blender. So far, we have "Look at Cursor" button for the TARGET move style and camera limits displayed in Blender viewport. So, we'll try to improve camera setup in the future.

04 March 2016 11:02
I don't see any mention of that step in the manual. Might want to add that, as other newbies will surely be as confused as I was.
Yes, we'll make it more clear. Anyway, this is a common detail for textures in Blender. Any texture with UV-mapping should have a UV-map layer to be rendered correctly. Also, generated coordinates don't require anything.
03 March 2016 10:12
Hi! You forgot to create a UV-map layer on this object.
02 March 2016 18:05
Тут завалялся вопрос, пожалуй, отвечу.

И еще появился вопрос.
Попробовал ортогональную камеру.
С ней не работает camera.calc_ray.

Т.е. при камере с перспективой, чтобы переместить объект, куда показывает курсор на нужной плоскости, мы
используем calc_ray для поиска точки пересечения луча камеры с нужной плоскостью.
В случае с ортогональной камерой вроде как пересечение искать и не надо наверно - куда ткнули, туда и ставим объект видимо. Но как преобразовать координаты мыши в координаты сцены, чтобы переместить туда объект (при ортогональной камере, которая смотрит на сцену строго перпендикулярно сверху)?

Да, calc_ray не рассчитан на использование с орто-камерой, но мы решили добавить эту возможность в ближайшем релизе.

А пока можно посчитать самому вручную. Найти точку пересечения будет довольно просто. Для перевода координат мыши в координаты сцены потребуется знать размеры фрустума ("пирамида видимости" как-то плохо звучит ) камеры. Метод get_ortho_scale вернет его вертикальный размер в метрах. С канвас-контейнера берем размеры вьюпорта в пикселях. Дальше считаем коэффициент соотношения :

var camera = m_scenes.get_active_camera();
var v_size = m_cam.get_ortho_scale(camera);

var container = m_cont.get_container();
var coeff = v_size / container.offsetHeight;


Текущая позиция камеры соответствует центру вьюпорта, так что смещение от центра в пикселях можно перевести в смещение относительно позиции камеры в метрах. Так мы получим координаты нужной точки в горизонтальной плоскости, проходящей через камеру. Если плоскость, с которой ищется пересечение - горизонтальная, то можно легко спроецировать точку на неё, если нет - то можно воспользоваться методом line_plane_intersect.

Да, ещё, если камера будет вращаться, то понадобится учитывать её кватернион поворота.
29 February 2016 18:37
This is returning a quaternion. However, I need this rotation value back into blender to set the rotation of a new camera.

You can still use it in Blender. Just set the rotation mode and the rotation quaternion on the camera as follows:

camera.rotation_mode = "QUATERNION"
camera.rotation_quaternion = new_quat


Also, the Quat can be converted to Euler by using this method. It depends on the angles' order which rotation mode should be set before applying the rotation in Eulers.

However, b4w quaternion should be prepared first, because of different order of its components. Let's assume that it has the following order: [x,y,z,w]. Then in Blender you should use it like this [w,x,-z,y]:

new_quat = mathutils.Quaternion((b4w_quat[3], b4w_quat[0], -b4w_quat[2], b4w_quat[1]))

29 February 2016 11:11
To solve this problem the addon's file server.py should be replaced by this: server.py

The folder containing the file to be replaced:



29 February 2016 11:03
В качестве решения нужно заменить файл server.py аддона на исправленный: server.py.

Искомый файл находится в этой папке: