﻿<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://wiki.blender.jp/index.php?action=history&amp;feed=atom&amp;title=%E5%88%A9%E7%94%A8%E8%80%85%3ABayesianHorse%2FBlenderPythonWishList</id>
	<title>利用者:BayesianHorse/BlenderPythonWishList - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.blender.jp/index.php?action=history&amp;feed=atom&amp;title=%E5%88%A9%E7%94%A8%E8%80%85%3ABayesianHorse%2FBlenderPythonWishList"/>
	<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:BayesianHorse/BlenderPythonWishList&amp;action=history"/>
	<updated>2026-09-05T12:46:02Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>https://wiki.blender.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:BayesianHorse/BlenderPythonWishList&amp;diff=150321&amp;oldid=prev</id>
		<title>Yamyam: 1版 をインポートしました</title>
		<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:BayesianHorse/BlenderPythonWishList&amp;diff=150321&amp;oldid=prev"/>
		<updated>2018-06-28T21:15:07Z</updated>

		<summary type="html">&lt;p&gt;1版 をインポートしました&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ja&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;2018年6月28日 (木) 21:15時点における版&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ja&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(相違点なし)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Yamyam</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.blender.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:BayesianHorse/BlenderPythonWishList&amp;diff=150320&amp;oldid=prev</id>
		<title>wiki&gt;BayesianHorse: /* Generic Python callbacks for operator calls */</title>
		<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:BayesianHorse/BlenderPythonWishList&amp;diff=150320&amp;oldid=prev"/>
		<updated>2015-11-12T07:15:49Z</updated>

		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Generic Python callbacks for operator calls&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= A Pythonista's Wishlist for 2.8 =&lt;br /&gt;
&lt;br /&gt;
I am not a Blender developer, so I know I can't implement these wishes or expect&lt;br /&gt;
anyone else to fulfill them. I do believe however, that this list may be interesting&lt;br /&gt;
to some in the community.&lt;br /&gt;
&lt;br /&gt;
TL;DR:&lt;br /&gt;
* native, official AsyncIO integration&lt;br /&gt;
* support for Cython&lt;br /&gt;
* generic Python callbacks for operator calls&lt;br /&gt;
* replace the blender-specific Python distribution with Continuum Analytic's Conda&lt;br /&gt;
* numpy array access to audio samples&lt;br /&gt;
* more Numpy in general&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Native, official AsyncIO integration ==&lt;br /&gt;
&lt;br /&gt;
AsyncIO is already in the Python standard library and is quickly becoming the&lt;br /&gt;
standard concurrency framework for Python. In case you don't know what concurrency&lt;br /&gt;
is: It's not threading, and Blender already operates this way: work is split into&lt;br /&gt;
fragments of codes, which are bound together by callbacks waiting for events like&lt;br /&gt;
IO or user interaction.&lt;br /&gt;
&lt;br /&gt;
I already wrote a basic integration of asyncio for Blender, and it enables non-blocking&lt;br /&gt;
network programming, a more convenient syntax for user interaction in scripts&lt;br /&gt;
and generator-driven macros. Among other things, it allows for http servers&lt;br /&gt;
running inside blender and better communication with external processes.&lt;br /&gt;
&lt;br /&gt;
The current state can be seen here:&lt;br /&gt;
https://github.com/akloster/blender-asyncio/tree/wip&lt;br /&gt;
&lt;br /&gt;
However, this is not very easy to get working, and I only tried it in Ubuntu.&lt;br /&gt;
&lt;br /&gt;
A native and official integration would reduce the CPU penalty of my solution&lt;br /&gt;
(which is already low), reduce conflicts of several plugins installing their&lt;br /&gt;
own event loops and enable Blender's event loop to be in total control of&lt;br /&gt;
task/event scheduling.&lt;br /&gt;
&lt;br /&gt;
== Generic Python callbacks for operator calls ==&lt;br /&gt;
&lt;br /&gt;
Among a lot of other things, operators behave as a concurrency framework and&lt;br /&gt;
can be seen as &amp;quot;tasks&amp;quot;, which are like threads, but in the context of an event&lt;br /&gt;
loop. However, it is impossible to execute custom Python callbacks at the end&lt;br /&gt;
of a modal operator call, at least without some very dirty meta programming tricks.&lt;br /&gt;
&lt;br /&gt;
What I mean by this is that a script would invoke an already existing operator, and be notified when this operator exits.&lt;br /&gt;
&lt;br /&gt;
Currently this situation means that scripts can't interact well with modal&lt;br /&gt;
operators, unless they reimplement them. It's also impossible to wait for the&lt;br /&gt;
completion of a computationally intensive operator without blocking the user&lt;br /&gt;
interface.&lt;br /&gt;
&lt;br /&gt;
== Support for Cython ==&lt;br /&gt;
&lt;br /&gt;
In the wider Python community, Cython is becoming the standard way to write&lt;br /&gt;
native code extensions for Python. Both for speeding up intensive computations&lt;br /&gt;
and to create bindings to other libraries. It would also allow script authors&lt;br /&gt;
faster access to blender's memory structures. For example, traversing the&lt;br /&gt;
network of data structures currently requires allocating and populating Python&lt;br /&gt;
objects which are discarde immediately. Case in point: Image.pixels requires&lt;br /&gt;
copying the complete image every time it is accessed from the Image instance,&lt;br /&gt;
even for one pixel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Conda ==&lt;br /&gt;
&lt;br /&gt;
Conda is a binary package manager. It is a lot like pip and virtualenv, but&lt;br /&gt;
it has better support for binaries, can seperate binary libraries from the rest&lt;br /&gt;
of the system and supports languages which have nothing to do with Python.&lt;br /&gt;
&lt;br /&gt;
This would solve several problems Blender currently has: The near-impossibility&lt;br /&gt;
of distributing python plugins with dependencies, let alone binary extensions,&lt;br /&gt;
incompatibilities of libraries linked into blender and those in system Python,&lt;br /&gt;
Blender's lack of support for virtualenv and the lack of a package manager in&lt;br /&gt;
general.&lt;br /&gt;
&lt;br /&gt;
== Numpy array access to audio samples ==&lt;br /&gt;
&lt;br /&gt;
For certain scripts it would be nice to have access to the audio samples. Currently&lt;br /&gt;
it requires linking to binary Python extensions or running an external process&lt;br /&gt;
like ffmpeg, creating a big mess.&lt;br /&gt;
&lt;br /&gt;
== More Numpy in general ==&lt;br /&gt;
&lt;br /&gt;
Numpy has a C-API. It is therefore entirely reasonable to store multi-dimensional &lt;br /&gt;
arrays of internal data in Numpy data structures with virtually no penalty in speed and&lt;br /&gt;
memory. But it enables easier and faster Python access. I could imagine a&lt;br /&gt;
Mesh API based around arrays, audio samples, even image data.&lt;br /&gt;
&lt;br /&gt;
In some senses, Numpy is a more sophisticated and mature replacement for Blender's&lt;br /&gt;
Mathutils.&lt;br /&gt;
&lt;br /&gt;
Again, I know that most of this is not going to happen, but I hope that these&lt;br /&gt;
suggestions can inspire a bit of debate about the Python API, and what addons&lt;br /&gt;
can and can't do in Blender.&lt;/div&gt;</summary>
		<author><name>wiki&gt;BayesianHorse</name></author>
		
	</entry>
</feed>