Age | Commit message (Collapse) | Author |
|
Test:
4104 rotating spheres.
Without moto modifications:
Logic : 5.15 : 5%
SceneGraph : 8.50 : 8%
Rasterizer : 20.90 : 21%
With:
Logic : 5.00 : 4%
SceneGraph : 8.00 : 8%
Rasterizer : 20.25 : 20%
|
|
This commit also replace MT_Tuple and MT_Point in ik solver and BGE with command :
find . -type f -exec sed -i 's/MT_Tuple/MT_Vector/g' {} +
find . -type f -exec sed -i 's/MT_Point/MT_Vector/g' {} +
|
|
|
|
Certain shapes could trick the inside/outside test.
An edge between 2 planar faces could be selected for detecting face-flipping (which failed).
While this could be prevented by skipping those edges,
use a method which searches for the outer most face-loop, then check it faces the center.
|
|
Caused by rBe0c60985b6.
|
|
|
|
Check version name first since 'python' binary may be a different version.
|
|
Works totally similar to backdrop in the compositor.
Requested by Sean Kennedy, but could be useful for lots for VFX guys.
Reviewers: campbellbarton
Reviewed By: campbellbarton
Subscribers: sebastian_k, hype
Differential Revision: https://developer.blender.org/D1590
|
|
Grabbing now doesn't 'jump' when shift is released (matching rotation modes).
This simplifies most logic for transform input,
where mouse input callbacks can choose to use the 'virtual' cursor,
which accounts for precision when shift is held.
|
|
Each time we setted the mass the own object gravity was divided by its
old mass (i.e you could convert you car in a flying DeLorean with a
simple mass car modification).
A note will be included in release notes due to retro compability
issues.
|
|
|
|
Regression in 2.76, order of tessellated vertices needs to follow MFace tessellation.
|
|
regression caused by 79c345ac
|
|
This option works for all paint modes now.
|
|
|
|
The start position must be initialized at the first call of KX_IpoSGController::Update when m_ipo_start_initialized is to false, not when also the frame time is not 0.
|
|
- Add spaces around operators.
- Replace !(a == b) by a != b
- Add "f" at end of float value.
- Remove extras lines in fonctions declaration.
- Remove indentation to align attributes definition.
|
|
|
|
To make consistent with KX_GameObject.replaceMesh, we don't allow this behavior but print an error message for the replace mesh actuator.
e.g : Warning: object "Cube" from ReplaceMesh actuator "Edit Object" uses a mesh not owned by an object in scene "scene1"
Reviewers: youle.
|
|
Previously it was possible that same component will be tagged for update
again and again, making update flushing really slow. Now we'll store flag
whether component was fully tagged.
This is still temporary solution because ideally we should just support
partial updates, but that's for the future.
Gives around 10% speedup on file from jpbouza.
|
|
This behavior caused a double free.
Before when we duplicated an instance of a group the new instance keep the pointer of the group but was not added in the group instance list (normal).
And during the object deletion we tried to remove the object in the instance list but anyways if it failed decrement the reference count.
Set the group and the instance list to NULL in ProcessReplica avoid these kind of problems.
|
|
|
|
image data
If the node output had only one layer, it would be detected as singlelayer, and it would miss the blender exr header string
|
|
The reported crash was confirmed as a segmentation fault in std::sort().
The cause of the crash was traced down to a binary comparison function
that was not satisfying the so-called strict weak ordering requirements of
the C++ standard sorting function. Specifically, the comparison operator
has to return false when two objects are equivalent (i.e., comp(a, a) must
be false), but that requirement was not met.
Since the binary comparison operator in question could be a user-defined
Python function, here a safety measure is implemented in the C++ layer to
make sure the aforementioned requirement is always satisfied.
|
|
Bug introduced in 583fa7d1e, KX_GameObject.setActionFrame can make BL_Action::m_starttime negative. But in BL_Action::Update m_starttime is set to the current time if it's negative.
To fix it we use a boolean BL_Action::m_initializedTime to know if we should initialize the time in BL_Action::Update, it's more stable than comparing times.
Tested with bug task T45945 and T32054, with an extra patch about to fix suspend resume scene issues with actions : D1569
|
|
Initial mouse position was saved in two different places
D1588 by @mauge
|
|
|
|
shading in Texture paint mode and cycles
|
|
Should fix T46616 but will reintroduce T46284.
The second, original bug needs different handling
This reverts commit 904db487a7b14c31282fe0284612159a836657cd.
|
|
- Fix in rna_object.c rna_GameObjectSettings_physics_type_set->The
collision bounds type can't be empty for character physics
- Add do_version for the .blends already saved with collision bounds
option empty (characters)
Reviewers: campbellbarton, panzergame, lordloki
Reviewed By: panzergame, lordloki
Subscribers: lordloki
Projects: #game_engine
Maniphest Tasks: T46557
Differential Revision: https://developer.blender.org/D1576
|
|
then in
Current object distance hasn't to be cached.
|
|
|
|
Shutter curve now can be controlled using curve mapping widget in the motion
blur panel in Render buttons. Only mapping from 0..1 by x axis are allowed,
Y values will be normalized to fill in 0..1 space as well automatically.
Y values of 0 means fully closed shutter, Y values of 1 means fully opened
shutter.
Default mapping is set to old behavior when shutter opens and closes instantly.
This shutter mapping curve could easily be used by any other render engine by
accessing scene.render.motion_blur_shutter_curve.
Reviewers: #cycles, brecht, juicyfruit, campbellbarton
Differential Revision: https://developer.blender.org/D1585
|
|
Previously curve mapping was always setting to only a single slope which then
was symmetrizied by a tools (such as brush or compositing).
With this change it's possible to set curve to symmetrical slopes as a part
of preset.
|
|
|
|
|
|
The separate window state setting caused a crash due to doing live resize code
redrawing a window that has not yet been fully initialized.
|
|
|
|
Seems was caused by the race condition in the stats printing, should be all fine now.
Nice for 'a' release.
|
|
Vertex parent was not registered as CPU data requirement.
Should be in the 'a' release.
|
|
This way it becomes much easier to navigate in roto compositor where it could
be 100s of masks in a production shot.
|
|
This appears to be really common workflow when you stabilize shot to make compo
easier (roto, some effects and so) and then re-introduce the motion back.
Surely it's doable with some magic nodes and manual network for transforming
but such workflow is too common in VFX to resist adding one small option in
single node for this.
|
|
Fix T43218: Text of framerate and profile glitch in Multitexture shading
Reviewers: lordloki, panzergame
Reviewed By: panzergame
Subscribers: medved
Projects: #game_engine
Maniphest Tasks: T43218
Differential Revision: https://developer.blender.org/D1536
|
|
the RegionView3D matrices need to be re-set after drawing.
Review and touch ups by Campbell Barton
|
|
Opening a tmp window on a 4K display with virtual pixelsize set to double results in a too small window. For Retina this seems to be handled on GHOST level already, so multiply by virtual pixelsize only.
|
|
|
|
This patch makes independant the override camera zoom and the default camera object zoom. The override zoom is 2.0f and the camera object zoom is computed with the RegionView3D camera zoom.
These features are only used for the embedded BGE, so there's no compatibility issues with the blenderplayer.
I let the override zoom with a setter to allow later to create an override camera in blenderplayer easily.
Tested with the 3 framing modes in embedded and standalone.
|
|
I made this patch to declared a python list without converting all elements in python object (too slow) or use a CListValue which required CValue items (too expensive in memory). In the case of a big list of points like a collision contacts points list, to use a CListValue we must implement a new class based on CValue for 3D vector to create a python proxy even if mathutils do it perfectly, we must also convert all points (frequently ~100 points) when fill the CListValue even if the list is not used (in the case of the collision callback). The easy way is to use callback (it doesn't worth to do an inheritance) which convert the item in PyObject only during an acces.
5 callbacks are used :
- Check if the list is valid = allow acces (like PyObjectPlus.invalid)
- Get the list size
- Get an item in the list by index.
- Get an item name in the list by index (used for operator `list["name"]`)
- Set an item in the list at the index position.
All of these callback take as first argument the client instance.
Why do we use a void * for the client instance ? : In KX_PythonInitTypes.cpp we have to initialize each python inherited class, if we use a template (the only other way) we must add this class each time we use a new type with in KX_PythonInitTypes.cpp
To check if the list can be accessed from python by the user, we check if the python proxy, which is the `m_base` member, is still a valid proxy like in PyObjectPlus. But we can use a callback for more control of user access (e.g a list of collision point invalidate a frame later, in this case no real python owner).
This python list is easily defined with :
```
CPythonCallBackList(
void *client, // The client instance
PyObject *base, // The python instance which owned this list, used to know if the list is valid (like in KX_PythonSeq)
bool (*checkValid)(void *), // A callback to check if this list is till valid (optional)
int (*getSize)(void *), // A callback to get size
PyObject *(*getItem)(void *, int), // A callback to get an item
const char *(*getItemName)(void *, int), // A callback to get an item name (optional) use for acces by string key
bool (*setItem)(void *, int, PyObject *) // A callback to set an item (optional)
)
```
To show its usecase i replaced the odd KX_PythonSeq, it modify KX_Gameobject.sensors/controllers/actuators, SCA_IController.sensors/actuators and BL_ArmatureObject.constraints/channels.
Example : {F245193}, See message in console, press R to erase the object and see invalid proxy error message.
Reviewers: brita_, #game_python, youle, campbellbarton, moguri, agoose77, sergey
Reviewed By: campbellbarton, moguri, agoose77, sergey
Subscribers: sergey
Projects: #game_engine
Differential Revision: https://developer.blender.org/D1363
|
|
label when active.
Poll function of that keymap was slightly... agressive.
|
|
progress bar at all).
|