Автор Тема: Тема для быстрых вопросов от новичков  (Прочитано 1349669 раз)

Оффлайн likenix

  • Житель
Re: Тема для быстрых вопросов от новичков
« Ответ #2910 : 19 Июль 2015, 18:46:07 »

Что нужно в итоге?


Может плохо объяснил. Попробую еще раз. Нужно повернуть вид только по оси Y =). Если поворачивать вид с использованием мыши с зажатой средней кнопкой, то поворот будет осуществлять вокруг выбранной точки по всем осям.

Мне нужно:

Нажимаем Numpad 7. Попадаем в вид Top Ortho. И я хочу повернуть этот вид только по оси Y, например с использованием мыши или numpad. Но как я уже писал Numpad 4 / 6 поворачивают по оси Z, а Numpad 2 / 8 поворачивают по оси X. Сейчас если это пытаться сделать с зажатойсредней  кнопкой мыши то поворот осуществляется сразу по нескольким осям и не всегда так как я хочу, точнее в большинстве случаев совсем не так как мне нужно. Приходится переключаться в другой вид.
« Последнее редактирование: 19 Июль 2015, 18:56:10 от likenix »

Оффлайн Samovar

  • Житель
Re: Тема для быстрых вопросов от новичков
« Ответ #2911 : 19 Июль 2015, 18:56:45 »
Угу... если даже чёто не поворачивается, надо включать опцию под названием смекалка...  :D

Оффлайн sungreen

  • ...
  • Житель
  • Kostroma mon amour
    • sungreen.github.io
Re: Тема для быстрых вопросов от новичков
« Ответ #2912 : 19 Июль 2015, 19:53:32 »
... по ходу добавлю, что в коде Blender жестко прописаны два вращения orbit и pan ...
... выглядит это так в файле view3d_edit.c ...
Код: C
static int vieworbit_exec(bContext *C, wmOperator *op)
{
View3D *v3d;
ARegion *ar;
RegionView3D *rv3d;
int orbitdir;
char view_opposite;
PropertyRNA *prop_angle = RNA_struct_find_property(op->ptr, "angle");
float angle = RNA_property_is_set(op->ptr, prop_angle) ?
              RNA_property_float_get(op->ptr, prop_angle) : DEG2RADF(U.pad_rot_angle);

/* no NULL check is needed, poll checks */
v3d = CTX_wm_view3d(C);
ar = CTX_wm_region(C);
rv3d = ar->regiondata;

/* support for switching to the opposite view (even when in locked views) */
view_opposite = (fabsf(angle) == (float)M_PI) ? ED_view3d_axis_view_opposite(rv3d->view) : RV3D_VIEW_USER;
orbitdir = RNA_enum_get(op->ptr, "type");

if ((rv3d->viewlock & RV3D_LOCKED) && (view_opposite == RV3D_VIEW_USER)) {
/* no NULL check is needed, poll checks */
ED_view3d_context_user_region(C, &v3d, &ar);
rv3d = ar->regiondata;
}

if ((rv3d->viewlock & RV3D_LOCKED) == 0 || (view_opposite != RV3D_VIEW_USER)) {
if ((rv3d->persp != RV3D_CAMOB) || ED_view3d_camera_lock_check(v3d, rv3d)) {
int smooth_viewtx = WM_operator_smooth_viewtx_get(op);
float quat_mul[4];
float quat_new[4];
float ofs_new[3];
float *ofs_new_pt = NULL;

if (view_opposite == RV3D_VIEW_USER) {
view3d_ensure_persp(v3d, ar);
}

if (ELEM(orbitdir, V3D_VIEW_STEPLEFT, V3D_VIEW_STEPRIGHT)) {
const float zvec[3] = {0.0f, 0.0f, 1.0f};

if (orbitdir == V3D_VIEW_STEPRIGHT) {
angle = -angle;
}

/* z-axis */
axis_angle_normalized_to_quat(quat_mul, zvec, angle);
}
else {

if (orbitdir == V3D_VIEW_STEPDOWN) {
angle = -angle;
}

/* horizontal axis */
                                axis_angle_to_quat(quat_mul, rv3d->viewinv[0], angle);
}

mul_qt_qtqt(quat_new, rv3d->viewquat, quat_mul);

if (view_opposite != RV3D_VIEW_USER) {
rv3d->view = view_opposite;
/* avoid float in-precision, just get a new orientation */
ED_view3d_quat_from_axis_view(view_opposite, quat_new);
}
else {
rv3d->view = RV3D_VIEW_USER;
}

if (U.uiflag & USER_ORBIT_SELECTION) {
float dyn_ofs[3];

view3d_orbit_calc_center(C, dyn_ofs);
negate_v3(dyn_ofs);

copy_v3_v3(ofs_new, rv3d->ofs);

view3d_orbit_apply_dyn_ofs(ofs_new, dyn_ofs, rv3d->viewquat, quat_new);
ofs_new_pt = ofs_new;

/* disable smoothview in this case
* although it works OK, it looks a little odd. */
smooth_viewtx = 0;
}

ED_view3d_smooth_view(C, v3d, ar, NULL, NULL,
                      ofs_new_pt, quat_new, NULL, NULL,
                      smooth_viewtx);

return OPERATOR_FINISHED;
}
}

return OPERATOR_CANCELLED;
}

... да и изюм в том что в массиве viewinv хранятся оси вращения, нулевой элемент это ось X, а первый ось Y ...
... то есть если в коде
    axis_angle_to_quat(quat_mul, rv3d->viewinv[0], angle);
заменить на
    axis_angle_to_quat(quat_mul, rv3d->viewinv[1], angle);
, то вращение будет не горизонтальное, а вертикальное ...

... вот мувик с жутким хаком ...
https://youtu.be/z_aSXqDfE1g

... как этого добиться через интерфейс самого Blender пока не знаю ...
... а также интересно узнать для чего нужно RV3D_VIEW_USER ...
« Последнее редактирование: 19 Июль 2015, 19:56:25 от sungreen »
Для Кота

Оффлайн likenix

  • Житель
Re: Тема для быстрых вопросов от новичков
« Ответ #2913 : 19 Июль 2015, 19:58:37 »
sungreen, спасибо за  старания, но я пока не лезу в такие дебри =).

Подскажите пожалуйста если это тут не противозаконно где можно на халяву моделек накачать есть какой нибудь интересный ресурс?

Оффлайн Samovar

  • Житель
Re: Тема для быстрых вопросов от новичков
« Ответ #2914 : 19 Июль 2015, 20:07:24 »
Цитировать
Подскажите пожалуйста если это тут не противозаконно где можно на халяву моделек накачать есть какой нибудь интересный ресурс?

http://tf3dm.com

Оффлайн sungreen

  • ...
  • Житель
  • Kostroma mon amour
    • sungreen.github.io
Re: Тема для быстрых вопросов от новичков
« Ответ #2915 : 19 Июль 2015, 20:18:32 »
>> де можно на халяву моделек накачать

... http://blendswap.com  -  ресурс с .blend файлами, в основном лицензия CC, в том числе и совершенно свободные (то есть даже без требования указывать авторство) ...


>> но я пока не лезу в такие дебри =).
... суть не втом чтобы править код (хотя и это тоже в принципе доступно), а обозначить возможность или невозможность добиться требуемого и если что попросить доработать ...
Для Кота

Оффлайн Samovar

  • Житель
Re: Тема для быстрых вопросов от новичков
« Ответ #2916 : 19 Июль 2015, 20:23:38 »
На blendswap.com есть ограничения на загрузку (лимит на трафик)... они так "торгуют" видимо... хотя модели там хорошие, но это не 100% халява :)

Оффлайн BlenderNoob

  • Житель
Re: Тема для быстрых вопросов от новичков
« Ответ #2917 : 21 Июль 2015, 07:23:31 »
Хочу скопировать набор рёбер:


Знаю только дублирование по Shift+D, но это немного не то, т.к. они окажутся "отвязанными" от моей плоскости/фейса, на котором они лежат сейчас и будут существовать просто отдельно, а мне нужно чтобы они прямо на этой плоскости скопировались и также, чтобы скопированные рёбра дальше влияли на этот меш при изменении размеров, например... Как можно такое сделать?

Оффлайн sungreen

  • ...
  • Житель
  • Kostroma mon amour
    • sungreen.github.io
Re: Тема для быстрых вопросов от новичков
« Ответ #2918 : 21 Июль 2015, 07:27:54 »
>> чтобы они прямо на этой плоскости скопировались
... то есть они совпадут с уже существующими? зачем так? ...
Для Кота

Оффлайн BlenderNoob

  • Житель
Re: Тема для быстрых вопросов от новичков
« Ответ #2919 : 21 Июль 2015, 07:40:57 »
>> чтобы они прямо на этой плоскости скопировались
... то есть они совпадут с уже существующими? зачем так? ...
Я хочу, чтобы они рядом стояли :) Отодвинуть как-то их :) Как вариант - можно не заморачиваться и рядом сделать такие же Ножом, но если объект будет посложнее: я хочу окна туда поставить, то их задолбаешься верстать ножом каждое, делая их одинаковым размером, если их ещё и штук 10 у дома будет :)

Оффлайн sungreen

  • ...
  • Житель
  • Kostroma mon amour
    • sungreen.github.io
Re: Тема для быстрых вопросов от новичков
« Ответ #2920 : 21 Июль 2015, 08:28:03 »
тогда, наверное, лучше перейти к блочной компоновке - сборку из  однотипных фрагмент стены с окном ...
или делать через булевый операции, врезая окна и двери в готовые стены ..
Для Кота

Оффлайн BlenderNoob

  • Житель
Re: Тема для быстрых вопросов от новичков
« Ответ #2921 : 21 Июль 2015, 08:39:30 »
или делать через булевый операции, врезая окна и двери в готовые стены ..
хм, а это хорошая идея!

тогда, наверное, лучше перейти к блочной компоновке - сборку из  однотипных фрагмент стены с окном ...
а вот это совсем не понял.. =) а каким образом это делается, нельзя ли совсем вкратце, если это не совсем сложно? :)

Оффлайн Striver

  • Житель
  • недоинженер, полупрограммист
    • http://striver00.ru
Re: Тема для быстрых вопросов от новичков
« Ответ #2922 : 21 Июль 2015, 08:59:42 »
Цитировать
тогда, наверное, лучше перейти к блочной компоновке - сборку из  однотипных фрагмент стены с окном ...
Цитировать
а вот это совсем не понял.. =) а каким образом это делается, нельзя ли совсем вкратце, если это не совсем сложно?
Например, сделать окно отдельным объектом, а потом размножить модификатором массива:


[вложение удалено Администратором]

Оффлайн Striver

  • Житель
  • недоинженер, полупрограммист
    • http://striver00.ru
Re: Тема для быстрых вопросов от новичков
« Ответ #2923 : 21 Июль 2015, 09:01:03 »
Цитировать
или делать через булевый операции, врезая окна и двери в готовые стены ..
Цитировать
хм, а это хорошая идея!
Не очень хорошая, лучше разрезай всю стену через Ctrl-R

Оффлайн BlenderNoob

  • Житель
Re: Тема для быстрых вопросов от новичков
« Ответ #2924 : 21 Июль 2015, 09:09:41 »
Не очень хорошая, лучше разрезай всю стену через Ctrl-R
А потом просто врезать отдельно свёрстанные окна?
С массивом - интересная идея :)

 


Яметрика

* По форуму

* Рекламный блок

* Последние вложения

1 (1).png
Скачано: 3048
Автор: LEXA ANЭGROWND
blender.png
Скачано: 3047
Автор: ipv2007
4.png
Скачано: 3078
Автор: hiroyukiss
2.png
Скачано: 3093
Автор: hiroyukiss

Скачано: 3125
Автор: Dilifa12