Monday, August 10, 2026

How to make UDIM aka fix the iray skin

 This is a old and known issue, from blender 3.3 they changed the way volumes are rendered, as a result the iray skin gets seams where different skin materials meet. This is because, with the new volume shader, we can have only one volume material per object, that wasn't a limitation before. So to avoid the issue we can use UDIM and make one single skin material. Or the alternative is to use the sss skin in the global settings, which doesn't use volumes, but that is approximated and needs to be fixed by hand most of the times, still it's a viable option.

Thomas did a huge amount of work on UDIM and collateral features in the 5.2 version. The main advantages in 5.2 are listed below as a quick overview. This list is limited to UDIM and doesn't include all the other bug fixes and improvements.

1. Merge geografts. We don't need anymore to specify "last udim" when we merge geografts, it is done automatically when needed. This means easy import works fine both with daz geografts and 3rd party geografts. Also a nasty bug is fixed were a countour seam were visible for geografts if exported at base resolution with sharp edges enabled.

2. Merge materials. Now works with geografts, while in previous versions the geografts and the main figure couldn't merge materials as they were treated as separate objetcs. DIMG groups are also fixed, as previously they were unnecessarily duplicated, also preventing to merge materials.

3. Resize textures. It is much more efficient and requires less memory, that's nice for large scenes or complex figures with lots of textures.

4. Bake LIEs. This new tool allows makeups and tatoos using LIEs to be included in the UDIM textures, that wasn't possible before.

5. Make UDIM and overwrite materials. While previously we had a single tool, the new tool is split in two. This allows to make udim textures for all the materials, if we want to. That's useful for example to paint textures in blender. That wasn't possible with the old tool. Then once we make udims we can overwrite the skin materials as before to make a single skin.

With all these bugs fixed and the new features we can now proceed. As example we take Victoria 9 with makeup and the daz genitalia, plus I added the Strix geografts for nipples and navel as we all know G9 doesn't provide geometry definition for them, apart the HD layer. However the steps are the same for any figure. Test scene provided "makeup-9-gen.duf". I assume the reader is familiar with the addon already so I'll not explain every simgle basic step, but rather focus on the new tools.

Beware renderotica is an adult site, so I'd not post the direct link here. Just search for "renderotica strix nipples" on google.

I don't seem to be able to upload files in the blog, other than images, so you can find the example scene on github. Of course you need the daz content installed for it to work.


1. Import the figure.


As a first step we import the figure with easy import as usual. We enable the BSDF materials and the iray skin in the global settings. Now if we render we see the seams where the skin materials meet, as expected. Depending on the specific skin and light conditions the seams can be more or less visible. Below it's Victoria 9 with the default HDRI, not horrible but still visible.



In the uv editor we see that the daz genitalia is placed in the last udim tile, while strix is merged to the body, also the materials are merged with the geografts. We can also see that all the textures are single images, not udim yet.



2. Save and resize textures then bake LIEs.


In blender UDIM need a special name, not compatible with the daz texture names, so we need to "save local textures" when making udims. Eventually we use "set resolution" in the materials panel, to reduce the texture size. The resolution level is the number of times the textures are halved. So for example with resolution 2 we go from 4K to 1K textures. The "all meshes" option will affect all the meshes in the scene, otherwise only the selected ones are affected.

Note that this, of course, will not affect the original textures in the daz library.




If the figure is using daz layered images aka LIEs it is mandatory to bake them, otherwise they can't be included in the UDIM textures. If we are unsure we can just run the tool that will bake if there's any, or just do nothing if there isn't.

The tool operates on the selected meshes.




After the tool is finished, this can be agood time to cleanup our scene, as we generated new textures and blender keeps the old unused data until we cleanup or close and reopen the scene. This is the usual behavior with blender, so we better get used to cleanup every while and then, especially after complex operations.

file > cleanup > purge unused data

3. Make UDIM and overwrite materials.


We now proceed to make udim textures. As a demonstration we make udim for all the materials, it isn't necessary to make a single skin, but it can be useful for painting in blender, and works fine to make a single skin anyway, so it's a win win.

It is essential to select the head material as active, as it includes the makeup and will be used as template. The "image size" is used to generate images to fill the udim, should any udim tile be missing in the daz textures. Then "combine texture types" will fix udims when a single texture is used with multiple color spaces, otherwise textures with different color spaces are duplicated, it is more a debug option can be always on.

In the image editor we now see the textures are all udims.







Again we can cleanup after making udims to purge memory from the old textures.

file > cleanup > purge unused data

Note. Making udims for all materials is complex, as the daz textures are not always compatible with UDIM, so the addon uses some heuristics to fit them. But the result is usually quite good. Nevertheless, if we encounter oddities in the UDIM textures, we can opt to only turn into UDIM the skin textures we're interested in. This works as the old tool and it is safer.

bug. Personally I get a bug for tiles 1005 1006 in the Victoria normal map, where extra tiles are generated but not filled. This bug Thomas can't reproduce it works fine on his system, so if you encounter the bug please let us know.

To fix this is easy though, we select the 1005 1006 tiles and "fill tile" with the neutral normal map color rgb(0.5,0.5,1.0), this is what the addon should do itself.




Now we can "overwrite materials", that means all the skin materials we select will be overwritten by the active material, again it is important to select the head as active to preserve the makeup. We can eventually exclude the fingernails if we want to keep them as a separate material.

We see the seams are gone as the skin is a single material.







Diffeomorphic Add-ons Version 5.2.0 Released

Version 5.2.0 of the DAZ Importer, MHX Runtime System and BVH and FBX Retargeter have been released. They can be downloaded from

DAZ Importer: 
https://www.dropbox.com/scl/fi/30jlo03jzd5a3fq647efc/import_daz-5.2.0.zip?rlkey=wp2ku7h4c16lq8kabxe62gt8b&st=gf09ki3v

MHX Runtime System: 
https://www.dropbox.com/scl/fi/swl13odwoqd0eu7a39avt/mhx_rts-5.2.0.zip?rlkey=8f7kypxv52vhleoy3rjns43vc&st=cfh6d9oc

BVH and FBX Retargeter: 
https://www.dropbox.com/scl/fi/sl5vlvnc5xza4bpi71kad/retarget_bvh-5.2.0.zip?rlkey=sn3bkdsn77eryl5qxzu1y16gt&st=49d3cold

The add-ons have been tested on Blender 3.6 and 5.2. They should run on Blender versions from 3.0 onwards.

The main reason for this release is compatibility with Blender 5.2. There are also various bug fixes.

Tuesday, July 14, 2026

DAZ vs JSON Favorites

 There are two ways to import favorite morphs into Blender. The first is to mark morphs as favorites in DAZ Studio and easy import them into Blender with the "DAZ Favorites" option enabled. But there is also a second method, where we first save a list of morphs as a json file. These morphs are then imported if we enable another easy import option, which was just called "Use Favorite Morphs", and were described in  Favorite Morphs and Easy Import.

It is unfortunate that two such similar but distinct options have so similar names. There were historical reasons for that, but it is easy to confuse the two types of favorites. To reduce confusion the type of favorites saved in a json file are now renamed to "JSON Favorites". The two types of favorites appear both in the morphs panel and in the easy import options.

Let us start with the DAZ favorites. In DAZ Studio we mark some morphs as favorites by pressing the heart-shaped icon. Here we have Genesis 8 Female with Golden Palace Gens and Headlights, and we make favorite morphs both for the base figure and the geografts. One of the main uses of favorite morphs, of both types, is to ensure that custom morphs are imported to geografts during easy import, before they are merged with the main figure.
Notice that the Nipple Inflate and Nipple Flatten 1 morphs are favorites for both the left and right Headlight.

 Enable the "DAZ Favorites" option in easy import.
The same morphs now appear in the custom morphs panel. Nipple Flatten 1 and Nipple Inflate appear in both the left and right headlights subpanels, and as we can see the sliders can be dialled independently.
After merging the grafts to the main mesh we can see all shapekeys. The names of the nipple shapekeys are qualified with the mesh name, to make them distinct.
Now we turn to JSON favorites. Import custom morphs to the main figure as well as the various geografts. This must clearly be done before the grafts are merged. Once all morphs are imported, select the meshes we want to include and press "Save JSON Favorites".
Here we specify the json file to save. If the "Compact View" option is enabled, the json file contains one line for each custom morphs panel. If it is disabled, there is one line for each morph. This can make the file very long, but is better for Manual Editing of Favorite Morphs.

The json file looks like this (in compact view).

Once we have a json file with favorite morphs, we can use it to import the same set of morphs to all characters of a given type (typically the same base figure and the same geografts). 

To import a daz file with json favorites, first select the json file in the main panel, right below the "Easy Import" button. The easiest way to do that is to press the folder icon to the right and navigate to the json file.
The "JSON Favorites" option is now enabled and the json file is selected. However, here the file path is just an ordinary string, and there is no folder icon to the right. It appears to be a Blender limitation that we can not launch a second file selector from within another one.

The favorite morphs now appear in the custom morphs panel, in the same way as for DAZ favorites.

Monday, April 20, 2026

SINGLE HD MAP

The addon already provides tools to bake HD figures, so this is just an alternative setup, easy to do by hand. The advantage is this way we use a single texture, and we don't have to save local textures as required by the built-in tools. We will use as example Victoria 8 HD.

This is a general method we can use with any multires, not only daz figures. We assume the reader is familiar with the basic blender tools so this is not a step by step tutorial.

step 1. HD uv map. First we create a new uv map for the HD texture, where all the figure uvs are in the first udim. For this it is enough to create a new uv map, then go to the uv editor and pack islands. Eventually we can also scale some islands to better fit the uv space. Below we see the Victoria 8 uv map packed nicely into the first udim.

edit mode: uv editor > uv > pack islands


step 2. HD texture. Then we create a new texture to bake to, first we create the image texture then the image for the texture. It is important to place this texture as selected in all the figure materials, so cycles knows it has to bake everything there. Note that we use the HD uv map for the texture, also we set the color space as non-color as this will be a normal map, but it's the same if we want to bake a displacement.


step 3. Bake. With the new texture in place and selected for all materials, we can now tell cycles to bake the multires. Below the settings I used. The baking process takes just a few seconds in a mid-level PC.

render properties > bake


step 4. Assign the HD texture. Now we have the normal map baked from multires, we can save the image then connect the texture to the bump node in all the materials. Note that the texture is the same for all the materials and it uses the HD uv map. Of course we can disable then delete the multires modifier as we don't need it anymore having it baked.

Yes it's that simple. The main annoyance is we have to connect the texture by hand for all the materials in the figure.



Saturday, April 4, 2026

Moving to GitHub

Atlassian has decided to sunset Bitbucket issues and wikis by August 20, 2026 (https://community.atlassian.com/forums/Bitbucket-articles/Announcing-sunset-of-Bitbucket-Issues-and-Wikis/ba-p/3193882). This means that the Diffeomorphic addons have to move before that. Atlassian suggests that one should use their JIRA software, but I don't know anything about JIRA and it looks really intimidating. Since staying on Bitbucket without a wiki and a bug tracker is not an option, I decided to migrate to GitHub instead. Most other open source projects seem to be hosted there, so it is probably a better place to be anyway. The stable releases on Dropbox are not affected by this migration.

The new repos are thus

I have managed to move the wikis to GitHub. It is still the same old and partly obsolete documentation, but at least it will live past August 20. 

The bug tracker will also be removed on August 20. New bugs should be reported at

Issues with the MHX RTS and BVH Retargeter should also be reported there, because I don't have the bandwidth to monitor several sites regularly. Old issues are still available as static web pages which can be downloaded from

Thanks to GeneralProtectionFault for scraping the old tracker. 

Saturday, March 21, 2026

Diffeomorphic Add-ons Version 5.1.0 Released

 Version 5.1.0 of the DAZ Importer, MHX Runtime System and BVH and FBX Retargeter have been released. They can be downloaded from

DAZ Importer: 
https://www.dropbox.com/scl/fi/xhzuuk8b7ljc9q6e82elh/import_daz-5.1.0.zip?rlkey=dne3g99ooizo6oq5jx3w4owln&st=7jghklqg

MHX Runtime System: 
https://www.dropbox.com/scl/fi/op24pkdexyvrp5jnu7gae/mhx_rts-5.1.0.zip?rlkey=y3zsymz5duukmgxwmfbfjzwc2&st=uezatm0b

BVH and FBX Retargeter: 
https://www.dropbox.com/scl/fi/qozj9a8jfidcwjwo4g0xf/retarget_bvh-5.1.0.zip?rlkey=0aabdno78nxq7byl7fe16mqj6&st=a3aeo55q

The add-ons have been tested on Blender 3.6 and 5.1. They should run on Blender versions from 3.0 onwards.

The main reason for this release is compatibility with Blender 5.1. Apart from various bug fixes, performance has also been improved, as announced here.

Monday, February 23, 2026

Performance Boost

I recently learned about the foreach_get and foreach_set functions that makes access to Blender arrays much faster. The latest versions of the Daz Importer (5.1.0) use these functions to loop over vertices, shapekeys, polygons etc. This had led to a quite nice performance boost.

A a test case I import a Genesis 9 Female character with eyebrows card style 06 and dForce Pixie cut hair. All global settings were set to the factory values (except the DAZ root paths), and the Genesis 9 preset was used for Easy import. I imported the character twice and hit ctrl-Z inbetween. Here are the results.

Blender 4.4:
addon 5.1:    39.398 seconds    37.200 seconds
addon 5.0:    75.642 seconds    75.424 seconds
addon 4.4:    70.669 seconds    70.991 seconds

Blender 5.0:
addon 5.1:    34.721 seconds    35.120 seconds
addon 5.0:    85.280 seconds    77.256 seconds

Blender 5.1 beta:
addon 5.1:    60.276 seconds    60.069 seconds

Notes:

1. The addon is backward but not forward compatible. Newer versions of the addon can be used in old blender versions, but not vice versa.

2. Version 5.1 (development version) of the addon is significantly faster than version 5.0.

3. Blender 5.1 beta is slower than previous Blender versions. This probably only reflects that a beta is not as optimized as a proper release.

The old method of loading shapekeys used to loop over the nonzero shapekeys in Blender, whereas the new method uses foreach_set to copy a numpy array in one sweep. However, for small morphs like the FACS, i.e. morphs that a localized to a small part of the full mesh, the old method may actually be faster. A python loop is much slower than the builtin method, but it only needs to access the nonzero shapekeys. For example, for the first Genesis 9 FACS morph, facs_bs_BrowDownLeft:
Mesh size:       25182
Morph size:     661
In that case the slow python loop is actually faster than using numpy.

For this reason, there is a new global setting, "Numpy Morph Fraction". The old method is used if the shapekey size (i.e. the number of nonzero deltas) is smaller than this fraction, otherwise the new method is used.


Tuesday, January 6, 2026

Active Morphs Panel

In the previous post I described how the Head and FACS morphs can be organized in subpanels; this is now the default behaviour. Another change is that the currently active morphs are collected in a separate panel, in the same way as in DAZ Studio. 

Here we have several active morphs, both head morphs (brows, mouth, tongue, visemes), an expression, and even some custom morphs like elf ears. All active morphs are present in a single place. 

The data structures needed to display the active morphs are built when the morphs are imported. If you have an old character, or if the active morphs have been corrupted for some reason, you can rebuild this data structure with the "Update Active Morphs" button at the top of the Morphs panel.

The existence of the "Active Morphs" panel is also governed by the global setting "Face Morphs Subpanels". If that option is disabled, the "Update Active Morphs" button is replaced by the old "Show Used Morphs Only" checkbox. The Morphs panel now looks like it did before, where the active morphs are spread out over the various panels.
One thing that I found annoying with the legacy behaviour was that a morphs disappeared when you drag the slider to zero, and "Show Active Morphs Only" had to be disabled to turn the morph back on. With the new setup a zero morph disappears from the "Active Morphs" panel, but the slider is still available in its native location.

Monday, December 22, 2025

Face Morph Subpanels

Standard morphs are grouped into various panels, but all morphs in a group are simply listed in alphabetical order. Mickey Ho pointed out that this is not practical for animating sliders, in particular for the hundreds of Genesis 9 FACS morphs. In DAZ Studio the various FACS morphs are grouped into subpanels, which makes access more convenient.

In the last commit the FACS panel has the same subpanels in Blender. To enable this feature, enable the global setting "Face Morph Subpanels".
The FACS panel now has the same subpanels as in DAZ Studio. The morphs are assigned to subpanels which makes them better organized.
The button on the top of a subpanel only apply to the morphs in this panel. The buttons at the top of the FACS panel affect the sliders in all subpanels.
Subpanels are also generated for the head pose morphs for previous generations, Genesis - Genesis 8. Before we had two types of face morphs, Face units and Visemes. That was a completely ad hoc separation that I did long ago, and may have made sense for the first Genesis generations. In the last commit those types are replaced by a single Head type. 

There used to be another type of standard morphs called Head which were taken from another directory. That included morphs like elf ears which are normally baked into the character, so those are not considered to be standard morphs anymore. If you need such morphs you can always import them as custom morphs.

Import standard morphs with the Head option enabled.
The panel with Head morphs is now split into subpanels, which work like the FACS subpanels.
If we import morphs with "Face Morphs Subpanels" disabled, or if we load an old character into the  scene, the old style morphs appear and work as before. The new option does not change how the morphs themselves work, but only how they are displayed in the user interface.

Sunday, December 14, 2025

Diffeomorphic Add-ons Version 5.0.0 Released

Version 5.0.0 of the DAZ Importer, MHX Runtime System and BVH and FBX Retargeter have been released. They can be downloaded from

DAZ Importer: 
https://www.dropbox.com/scl/fi/8b5z3cy6kd9pcxeo17bh1/import_daz-5.0.0.zip?rlkey=udvj5mbw4f1psmvrnt8949ed5

MHX Runtime System: 
https://www.dropbox.com/scl/fi/0nf018loxjpy0nbe26zpr/mhx_rts-5.0.0.zip?rlkey=dd33350oazwagkund3puqt7up

BVH and FBX Retargeter: 
https://www.dropbox.com/scl/fi/0ftrenp005ub78ov5fek0/retarget_bvh-5.0.0.zip?rlkey=c27jhf4pxc3scpu0ffmil197d

The add-ons have been tested on Blender 3.6, 4.5 and 5.0. They should run on Blender versions from 3.0 onwards.

The main reason for this release is compatibility with Blender 5.0. Several other bugs have also been fixed.

Friday, December 12, 2025

Conclusion

The time has come to wrap up this series of posts. I went to grad school in the early 1980s, and specialized in phase transitions and critical phenomena, often working on 2D models. A few years later conformal field theory (CFT) came along, and essentially finished my field of research. I was too young and isolated to notice at the time, but when I did notice a few years later I felt that I had missed the bandwagon. CFT explains everything worth knowing about 2D critical phenomena, but it says nothing about the much harder and physically more relevant case of critical phenomena in 3D. So I started to think that something similar might work in higher dimensions as well. It can not be conformal symmetry, because the conformal group is infinite-dimensional only in 2D. But the same group also described diffeomorphisms in 1D, and that has a natural generalization to higher dimensions.

This made me decide that a multi-dimensional Virasoro algebra had to exist and I went out to find it. That it really does exist and has natural realizations on p-jets was very satisfying, but completing this task took a long time and I ran out of funding in the process. Moreover, it is only a limited success, because important pieces of the puzzle are still missing.

  • There are operators acting on a vector space, but I haven't found a nice way to identify this space with its dual. So there is no known inner product and we can not discuss unitarity.
  • The vector space is too big because momenta and velocities are not identified, which they should be.
  • This is a purely kinematical theory, like tensor calculus. To use it in physics we should introduce dynamics in some form, with a Lagrangian, a Hamiltonian, or equations of motion. Doing this for p-jets is surprisingly difficult, or at least it was for me.

Because of these shortcomings I haven't been able to apply this theory to physics. Nevertheless, the math exists which made the effort worthwhile in itself, and I hope that somebody will make progress on the above problems one day.

But even if much remains to be done, some physics insights can still be extracted. The Virasoro extension depends on the observer's trajectory, and therefore we need a theory with an explicit physical observer. Since the observer's position is an operator, we must measure it to know its value, and that measurements is subject to quantum fluctuations. This is really enough to rule out every approach to quantum gravity which does not take horizontal fuzziness into account, because the lack of horizontal fuzziness amounts to a hidden assumption about an infinite mass.

<Previous    <<First



Wednesday, December 10, 2025

Four Dimensions?

Recall how we constructed representations of the multi-dimensional Virasoro algebra last week.

  • Start from a classical representation acting on a tensor field, which corresponds to a representation of the general linear algebra \(gl(d)\).
  • Make a Taylor expansion around the observer's location and truncate at order \(p\), i.e. pass to \(p\)-jet space.
  • Consider trajectories in \(p\)-jet space.
  • Introduce a vacuum state that is annihilated by all negative frequency modes, and normal order.

The "abelian charges", i.e. the coefficients in front of the extensions, depend both on the choice of \(gl(d)\) representation and on the trunctation order \(p\). They are polynomials in \(p\) of order \(d\), which means that they diverge in the limit \(p \to \infty\). This is not surprising. We passed to \(p\)-jets because the extension becomes infinite if we start from fields. By taking the limit \(p \to \infty\) we come back to the field we started from, insofar as an infinite Taylor series can be identified with the field itself, and the extension becomes infinite again.

Even if expected, having an infinite extension is undesirable and should be avoided. How to do that? We started from a bosonic field, but if we start from a fermionic field instead, we get the same extension but negative. So one way to avoid infinities is to have a perfect symmetry between bosons and fermions. However, such a symmetry is not seen in nature, and we saw yesterday that we lose locality if the total extension vanishes.

There is another way to cancel the leading terms, only leaving abelian changes that are independent of \(p\). Add more jets of order \(p-1\), \(p-2\) etc, both bosonic and fermionic. With a clever choice of field content, we can cancel all terms that depend on \(p\). For this to work in \(d\) dimensions, we need jets down to order \(p-d\). A similar hierarchy appears in gauge theory, where the lower-order jets would come from equations of motion and gauge conditions (continuity equations). Since those add derivatives, their jet order must be smaller, so the total number of derivatives does not exceed \(p\). So we start from

  • Bosons, fermions, and gauge fields at order \(p\).
  • Fermionic equations of motion at order \(p-1\).
  • Bosonic equations of motion at order \(p-2\).
  • Gauge conditions at order \(p-3\).

Then we can arrange the field content so that the divergent terms cancel if \(d=3\). We can further identify the time parameter \(t\) with one of the coordinates, and we naturally are led to the conclusion that the dimension of spacetime must be \(d+1 = 4\).

Unfortunately, a more detailed version of this argument seems to suggest things that disagree with observation, so the results are inconclusive. Nevertheless, I find it promising that the multi-dimensional Virasoro algebra seems to predict not only the number of spacetime dimensions, but actually the observed number of dimensions.

<Previous    Next>

Tuesday, December 9, 2025

Locality in Quantum Gravity

Today I argue that quantum gravity must be a local theory. However, a well-known theorem asserts that there are no local observables in quantum gravity. How can these statements be reconciled?

The thing to notice is that theorems have axioms. If one of the axioms is violated, the theorem does not apply. The relevant axiom in this case is the assumption that classical and quantum gravity have the same sets of gauge symmetries. If the group of spacetime diffeomorphisms acquires an extension upon quantization, that assumption fails. The multi-dimensional Virasoro algebra is that extension on the Lie algebra level.

Hence a theory of quantum gravity with local observables can not be a QFT. It must be a theory with horizontal fuzziness, i.e. QJT.

The same argument applies to theories with infinite conformal symmetry, because the infinite conformal group is isomorphic to the diffeomorphism group in one complex dimension. Hence there can be no local observables in a theory with infinite conformal symmetry. But this is not a problem in conformal field theory, because the relevant symmetry is not infinite conformal symmetry but rather the Virasoro symmetry with a nonzero central charge. 

If there are local observables, the symmetry group acts in a non-trivial way on them. A necessary condition for locality is thus that the symmetry group has nontrivial unitary representations. Indeed, the centerless Virasoro algebra does not have any of those, and hence there can't be any local observables if the central charge vanishes. If the central charge is nonzero there are many nontrivial representations, and hence local observables are possible. The same thing happens with gravity. If the spacetime diffeomorphism group does not have an extension, it remains a gauge symmetry and there are no local observables. When it has extensions described by the multi-dimensional Virasoro algebra, it becomes an ordinary symmetry and local observables are no longer ruled out.

Another way to see the need for locality is that correlation functions diverge in the same way when points coalesce, whether gravity is present or not. Correlation functions in flat space (ignoring gravity) typically diverge when spacetime points \(x\) and \(y\) approach each other in the following manner:
\[
<\phi(x) \phi(y)> \ \cong\ |x-y|^{-2\Delta}.
\]
The distance between the two points depends on the metric \(g_{\mu\nu}\):
\[
|x-y|^2 = g_{\mu\nu} (x^\mu - y^\mu) (x^\nu - y^\nu)
\]
In flat space the metric is the constant Minkowski metric. In the presence of gravity the physical metric is the gravitational field, and it is unclear what the distance would mean. However, we don't have to use the physical metric to define this distance; any metric would do. Of course the distance and hence the correlation function depends on the choice of unphysical metric, but the leading singularity does not. This is because the scaling dimension is the eigenvalue of the dilatation operator
\[
D = x^\mu {\partial \over \partial x^\mu}
\]
This is the contraction of an upper and lower index and hence independent of the metric. The scaling dimension only depends on the smooth structure. Since the correlation functions diverge in flat space, they must diverge in the presence of gravity as well.

<Previous    Next>



Monday, December 8, 2025

Causal order

The key lesson from general relativity is background independence. There is no classical background metric, but the metric is the gravitational field which participates in the dynamics. However, this poses problems for the Hamiltonian formulation of physics. 

In its simplest form, Hamiltonian physics deals with the phase space of positions and momenta at time \(t=0\), and the choice of a time coordinate makes use of the background metric. More generally, spacetime can be foliated into spacelike surfaces, but the notion of spacelikeness again requires a background metric. There is also a formulation that probably goes back to Lagrange which identifies phase space with the space of solutions to the equations of motions, but the background metric sneaks in even here. Such an orbit is typically specified by position and velocity at time \(t=0\). So orbits are parametrized by positions and velocities, but phase space is the space of positions and momenta. In order to identify the two we need to identify velocity and momentum, i.e. a contravariant vector with a covariant one. This again requires a background metric.

In QJT the problem goes away altogether, because there is no notion of spacelikeness. All objects in the theory are separated by a timelike distance, because everything lives on the observer's trajectory, both the Taylor coefficients \(\phi_m(t)\) and the expansion point \(q(t)\). This does of course not mean that points outside the observer's trajectory do not exist, but they are not covered by QJT because they can never be directly observed by the preferred observer. 

The same situation arises in mathematics. In order to make a Taylor expansion we must specify a field and an expansion point, i.e. the observer's position. We could pick a different expansion point, and there is a relation between the two sets of Taylor coefficients. But we must pick one, i.e. we must commit to one specific observer. All points on the observer's worldline are then causally ordered.

<Previous    Next>



Sunday, December 7, 2025

Diff Anomalies in Four Dimensions

An extension of the diffeomorphism algebra is a kind of diff anomaly, but according to standard wisdom there are no diff anomalies at all in four dimensions. This is correct, within the framework of QFT without horizontal fuzziness. Hence a quantum theory of gravity must go beyond QFT.

To elaborate on this point, let us consider an analogous but simpler system, namely Yang-Mills theory in four dimensions. In the Hamiltonian formulation, the constraint algebra is the algebra of maps from 3-space to some finite-dimensional Lie algebra. As has been well known to experts since the 1980s [Pressley-Segal, Loop groups, chapters 4 and 9], this algebra of maps admits two qualitatively different extensions: the central extension and the Mickelsson-Faddeev extension. Let us contrast the two.

The Mickelsson-Faddeev extension
1. is proportional to the third Casimir invariant.
2. describes gauge anomalies in QFT.
3. treats all space points on an equal footing.
4. has no non-trivial unitary representations, at least not of lowest-energy type [Pickrell 1989].
5. is therefore a bad anomaly, which must not arise in nature.
6. and indeed, cancels in the standard model.

In contrast, the central extension
1. is proportional to the second Casimir invariant.
2. does not arise within the framework of QFT without horizontal fuzziness.
3. does not treat space points equally, but depends on a privileged one-dimensional curve, "the observer's trajectory".
4. has many non-trivial unitary representations.
5. is therefore a good anomaly, which cannot be ruled out on the basis of unitarity.

The multi-dimensional Virasoro algebra is the diffeomorphism analogue of this central extension, which we may also call the multi-dimensional affine algebra.

<Previous    Next>

Saturday, December 6, 2025

Gauge Anomalies and Consistency

The diffeomorphism algebra is the gauge symmetry of classical general relativity. An extension thereof is hence a kind of gauge anomaly, which according to conventional wisdom is fatal for the quantum theory. However, the claim that gauge anomalies are always inconsistent is wrong. Counterexample: the free subcritical string, which can be quantized with a ghost-free spectrum despite its conformal gauge anomaly.

Of course, this does not mean that every theory with a gauge anomaly is consistent. Some are (free subcritical string), others are not (free supercritical string, interacting subcritical string). But if the anomalous theory is consistent, some classical gauge symmetry becomes an ordinary quantum symmetry, which acts on the Hilbert space rather than reducing it (here: conformal symmetry). Conversely, some classical gauge degrees of freedom become physical after quantization (trace of the worldsheet metric).

So the crucial property is unitarity, not triviality. 

<Previous    Next>

Friday, December 5, 2025

Third Week

The first week of this series centered around the idea of horizontal fuzziness. This is really about taking quantum mechanics seriously. Quantum fluctuations do not only apply to measurements inside a detector (vertical fuzziness), but also to the measurement of the detector's location (horizontal fuzziness). Ignoring horizontal fuzziness amounts to a hidden assumption about an infinitely massive detector, which does not work in the presence of gravity.

The second week I described the multi-dimensional Virasoro algebra, i.e. the Virasoro-like extensions of the diffeomorphism algebra in \(d\) dimensions. The classical representations act on tensor fields, but that is not a good start for quantization, because normal ordering gives rise to infinite extensions due to unrestricted sums over transverse directions. Instead we must start from \(p\)-jets, i.e. Taylor series truncated at order \(p\). Since a Taylor series depends not only on the field being expanded, but also on the choice of expansion point, we naturally have a horizontal observable that displays fuzziness.

The multi-dimensional Virasoro algebra is not really physics, since it only involves kinematics but not dynamics. It is more like a quantum version of tensor calculus rather than a quantum version of gravity. Nevertheless, already at this level there are some consequences which are very much in disagreement with conventional wisdom. This is what we will discuss during this third and final week.


<Previous    Next>

Thursday, December 4, 2025

Multi-dimensional Virasoro Algebra and Jets

The classical representations of the diffeomorphism algebra act on tensor densities, in the following way.
\[
[{\cal L}_\xi, \phi(x)] = -\xi^\mu(x)\partial_\mu\phi(x) 
- \partial_\nu \xi^\mu(x) T^\nu_\mu\phi(x),
\]
where the \(T^\mu_\nu\) are some matrices that satisfy the general linear Lie algebra \(gl(d)\), with brackets
\[
[T^\mu_\nu, T^\sigma_\tau] = 
\delta^\sigma_\nu T^\mu_\tau - \delta^\mu_\tau T^\sigma_\mu.
\]
By choosing different representations of \(gl(d)\) we obtain the transformation laws for all kinds of tensor densities in \(d\) dimensions.

From this we can derive how the diffeomorphism algebra acts on Taylor series. We already know that it acts nonlinearly on the observer's trajectory:
\[
[{\cal L}_\xi, q^\mu(t)] = \xi^\mu(q(t)).
\]
The action on the Taylor coefficients is given by
\[
[{\cal L}_\xi,\phi_n(t)] = -\sum_m T^m_n(\xi(q(t))) \phi_m(t),
\]
where \(T^m_n(\xi)\) are complicated expressions that depend on the vector field \(\xi\) and its derivatives, and also on the matrices \(T^\mu_\nu\). The exact form can be found in [math-ph/9810003], [arXiv:1502.07760]. 

A \(p\)-jet is locally a Taylor series truncated at order \(p\). So instead of summing over all \(m\), we restrict the sum to \(m < p\). In multiple dimensions, this means that if \(m = (m_0, m_1, .., m_{d-1})\), the sum \(m_0 + m_1 + .. + m_{d-1} < p\).
\[
\phi(x,t) = \sum_m^p {1\over m!} \phi_m(t) (x-q(t))^m.
\]
The space spanned by \(\phi_m\) with \(m < p\) is preserved by diffeomorphisms, because \(T^m_n(\xi) = 0\) if \(m < n\).

Now introduce the canonically conjugate momenta \(p_\mu(t)\) and \(\pi^n(t)\), 
\[\begin{align}
[q^\mu(t), p_\nu(t')] &= i\delta^\mu_\nu \delta(t-t'), \\
[\phi_m(t), \pi^n(t')] &= i\delta_m^n \delta(t-t').
\end{align}\]
We can now write down the normal-ordered Lie derivatives.
\[\begin{align}
{\cal L}_\xi &= i \int dt\ \Big( :\xi^\mu(q(t)) p_\mu(t): 
- \sum_{m,n} : \pi^n(t) T^m_n(\xi(q(t))) \phi_m(t): \Big)
\end{align}\]
As in the previous post, normal ordering means that we move negative-frequency modes to the right, where they can annihilate the vacuum. Because of normal ordering, the Lie derivatives satisfy the multi-dimensional Virasoro algebra. 

  • The space of \(p\)-jets, spanned by the base point and the Taylor coefficients up to order \(p\), is finite-dimensional. Hence the space of trajectories in this space is spanned by finitely many functions of a single variable, so we can still do normal ordering without encountering infinities.
  • The coefficients in front of the extensions ("the abelian charges") depend on the choice of \(gl(d)\) representation and the truncation order \(p\). In \(d\) dimensions, the abelian charges are polynomials in \(p\), and the leading terms are proportional to \(p^d\).
  • In the limit \(p\to\infty\), i.e. when we deal with infinite jets, the abelian charges thus diverge. This is not surprising. We turned to \(p\)-jets because the original realization on fields resulted in nonsensical infinities. This is a kind of regularization. When we remove the regularization by letting \(p\to\infty\), the infinities reappear. I will discuss some ideas how to cancel these infinities in a later post.

<Previous     Next>


Wednesday, December 3, 2025

Off-shell Representations

We saw in a previous post that we can not construct representations in multiple dimensions by quantizing fields. So how could it be done? This was a problem that I struggled with for many years. In retrospect the answer is obvious, but I could only arrive at it after studying the seminal work of Rao and Moody.

A vector field is of the form \(\xi^\mu(x) \partial_\mu\), so we can embed it in a Heisenberg algebra generated by the oscillators \(q^\mu\) and \(p_\nu\). The nonzero brackets are
\[
[q^\mu, p_\nu] = i\delta^\mu_\nu
\]
and the embedding is
\[
{\cal L}_\xi = i \xi^\mu(q) p_\mu.
\]
More precisely, this is an embedding into the corresponding enveloping algebra.

This realization is not very interesting, because this Heisenberg algebra is finite-dimensional and therefore no extension arises upon normal ordering. But with a slight modification we can obtain non-trivial representations of the multi-dimensional Virasoro algebra. Namely, let the oscillators depend on a parameter \(t\) which lives on the circle. The nonzero brackets are now given by
\[
[q^\mu(t), p_\nu(t')] = i\delta^\mu_\nu \delta(t-t'),
\]
where \(\delta(t)\) is the delta function. The Lie derivatives
\[
{\cal L}_\xi = i \int dt\ \xi^\mu(q(t)) p_\mu(t)
\]
have the following brackets with the oscillators
\[
[{\cal L}_\xi, q^\mu(t)] = \xi^\mu(q(t)).
\]
Since the oscillators depend on a circle variable, we can expand them in a Fourier series.
\[\begin{align}
q^\mu(t) &= \sum_{k=-\infty}^\infty {\hat q}^\mu(k) {\mathrm e}^{ikt}\\
p_\nu(t) &= \sum_{k=-\infty}^\infty {\hat p}_\nu(k) {\mathrm e}^{ikt}.
\end{align}\] 
The vacuum is defined to annihilate all negative frequency modes, i.e.
\[
{\hat q}^\mu(-k) |0> = {\hat p}_\nu(-k) |0> = 0,
\]
for all \(k > 0\). Define \(p^>_\mu(t)\) as the sum over positive frequency modes and \(p^<_\mu(t)\) as the negative frequency part, i.e.
\[
p^>_\mu(t) = \sum_{k=0}^\infty {\hat p}_\mu(k) {\mathrm e}^{ikt}.
\]
Normal ordering amounts to moving negative frequency modes to the right.
\[
:\xi^\mu(q(t)) p_\mu(t): = p^>_\mu(t) \xi^\mu(q(t)) + \xi^\mu(q(t)) p^<_\mu(t).
\]
If we normal order the expression for the Lie derivatives we obtain a representation of the multi-dimensional Virasoro algebra with \(c_1 = 1, c_2 = 0\).

There are two crucial observations:

  • The Heisenberg algebra is infinite-dimensional, but its basis consists of finitely many functions of a single variable \(t\). This is the case where we can do normal ordering without introducing infinities, because there are no transverse modes that can give rise to infinite sums. 
  • The embedding is nonlinear, and therefore the extension is non-central. The Virasoro extensions are functionals of the observer's trajectory, which do not commute with diffeomorphisms that move the observer's trajectory around. It is central in one dimension, because on the circle there is only a single trajectory, namely the circle itself.

<Previous    Next> 

Tuesday, December 2, 2025

Geometrical Formulation

Previously we introduced the multi-dimensional Virasoro algebra in a Fourier basis on the \(d\)-dimensional torus, and showed that trying to build representations in the same way as in one dimension fails. Today I will describe a more geometrical formulation which will make the connection to QJT explicit.

Infinitesimal diffeomorphisms are generated by vector fields, which are locally of the form
\[
\xi = \xi^\mu\partial_\mu 
= \sum_{\mu=0}^{d-1} \xi^\mu(x) {\partial\over\partial x^\mu},
\]
where again we use Einstein's summation convention: two indices, one up and one down, are implicitly summed over. The bracket between two vector fields is
\[
[\xi, \eta] = \xi^\mu \partial_\mu \eta^\nu \partial_\nu -
\eta^\nu \partial_\nu \xi^\mu \partial_\mu.
\]
The diffeomorphism algebra, or algebra of vector fields, is the Lie algebra generated by the Lie derivatives \({\cal L}_\xi\):
\[
[{\cal L}_\xi, {\cal L}_\eta] = {\cal L}_{[\xi,\eta]}.
\]
In this formalism, the multi-dimensional Virasoro algebra takes the form in the blog banner.
\[\begin{align}
[{\cal L}_\xi, {\cal L}_\eta] &= {\cal L}_{[\xi,\eta]}
 + {1\over{2\pi i}}\int dt\ \dot q^\rho(t)
 \Big( c_1\ \partial_\rho\partial_\nu\xi^\mu(q(t))\ \partial_\mu \eta^\nu(q(t))\ +\\
& \qquad\qquad\qquad +\ c_2\ \partial_\rho \partial_\mu \xi^\mu(q(t))\ \partial_\nu \eta^\nu(q(t)) \Big),\\
[{\cal L}_\xi, q^\mu(t)] &= \xi^\mu(q(t)), \\
[q^\mu(t), q^\nu(t')] &= 0. 
\end{align}\] 
This is strictly speaking not a Lie algebra, because \(q\) appears non-linearly in the right-hand side. But we can extend these brackets to arbitrary functionals of \(q\), and then they define a proper Lie algebra.

To verify that this is a Lie algebra (anti-symmetry and Jacobi identities), we integrate by parts and throw away the boundary terms. Hence we must also add the condition that the integral of a total derivative vanishes.
\[
\int dt {dF(t)\over dt} \equiv 0.
\]
This is the case if the integral runs over a circle, or if we only consider vector fields which decrease sufficiently fast when \(t \to \pm\infty\). 

To connect this formulation with the previous one, we note that a basis for the vector fields on the \(d\)-torus is given by the plane waves \(i\exp(im\cdot x) \partial_\mu\). Define
\[\begin{align}
L_\mu(m) &= {\cal L}(i\exp(im\cdot x) \partial_\mu) \\
S^\mu(m) &= {1\over{2\pi}}\int dt\ \dot q^\mu(t) \exp(im\cdot q(t)) 
\end{align}\] 
These operators indeed satisfy the multi-dimensional Virasoro algebra in the Fourier basis. In particular, the vanishing of total derivatives leads to the condition
\[
m_\mu S^\mu = 
{1\over{2\pi i}} \int dt\ {d\over dt}\Big(\exp(im\cdot q(t)) \Big) 
\equiv 0.
\]
We used the same letter \(q\) here as we did for the expansion point in the Taylor series. This is not a coincidence, and we will show later that they are the same. Hence the observer's position appears already in the very definition of the multi-dimensional Virasoro algebra, which explains why we need QJT to construct representations.

<Previous     Next>