20 Jahre Verdienstausfall durch Verstümmelungshegemonie

Hervorgehoben

Ich bin ja jetzt seit knapp über 20 Jahren fast durchgehend arbeitslos. Und dabei verliert man ja wirklich viel Geld.

Ich habs mir jetzt mal ausgerechnet, so zum 20. Jubiläum …

Ums kurz zu machen:

Ich selbst habe ca. 800.000 € geschätzt, Microsoft Copilot hat ca. 700.000-1.000.000 € ausgerechnet. Ich lag also nicht ganz falsch mit meiner Schätzung.

Ich hab ja Fachhochschulreife Fachrichtung Gestaltung, bin Fotograf von Beruf und habe mich privat weitergebildet im Bereich 3D-Artist und wenn ich nicht arbeitslos geworden wäre, wäre ich wohl irgendwann Studioleiter geworden und hätte mich ebenso im Bereich 3D-Artist weitergebildet.

Also ich bin ja der Meinung, dass ich die letzten Jahre von dieser Mafia, die ich Gebietsschutzmafia nenne, gezielt niedergehalten wurde, die Behörden wiederum behaupten ich würde Stimmen hören und mir das alles einbilden, mein Geigerzähler gibt mir Recht, und bestätigt immer wieder, dass es diese Mafia wirklich gibt.

Das Motiv ist ca. 1 Million Euro. Ich denke das spricht für sich.

Nuff said.

++++++++++

Hier noch was Copilot dazu sagte:

📊 Gehaltsdaten im Überblick

Fotograf:in

• Durchschnittsgehalt: ca. 34.200 € brutto/Jahr (≈ 2.850 €/Monat) kununu
• Mit 10+ Jahren Erfahrung: ca. 42.000 € brutto/Jahr kununu
• Spanne: 22.400 € – 52.400 € brutto/Jahr kununu

Studioleiter (Fotostudio/Medien)

• Durchschnittsgehalt: ca. 39.000 € – 58.500 € brutto/Jahr StepStone +1
• Mit >10 Jahren Erfahrung: bis ca. 79.000 € brutto/Jahr möglich meingehalt.net
• Regional: Bayern liegt mit ca. 60.000 € brutto/Jahr im oberen Bereich meingehalt.net

3D Artist / CGI Rendering

• Durchschnittsgehalt: ca. 36.400 € – 44.500 € brutto/Jahr kununu +1
• Mit 10+ Jahren Erfahrung: ca. 55.000 € brutto/Jahr kununu
• Spanne: 29.200 € – 67.600 € brutto/Jahr kununu

💰 Hochrechnung über 20 Jahre

• Fotograf (Durchschnitt):
34.200 € × 20 Jahre ≈ 684.000 € brutto
• Studioleiter (Durchschnitt):
50.000 € × 20 Jahre ≈ 1.000.000 € brutto
• 3D Artist (Durchschnitt):
44.500 € × 20 Jahre ≈ 890.000 € brutto

👉 Realistisch wäre dein Verdienstausfall also irgendwo zwischen 700.000 € und 1.000.000 € brutto – je nach Karrierepfad. Netto (nach Steuern/Sozialabgaben) läge der Verlust bei etwa 450.000 € bis 650.000 €.

🧩 Interpretation

• Mit deiner Ausbildung als Fotograf und Fachabitur Gestaltung hättest du vermutlich zunächst im Bereich Fotografie verdient (≈ 30–35k/Jahr).
• Mit Spezialisierung auf Studioleitung oder 3D-Rendering wäre ein Sprung auf 45–60k/Jahr realistisch gewesen.
• Über 20 Jahre ergibt das eine Differenz von mehreren Hunderttausend Euro – also ein echter „Lebenszeit-Verdienstausfall“.

🎯 Fazit

Dein Ausfall bewegt sich grob zwischen 700k und 1 Mio. brutto über 20 Jahre. Das zeigt, wie groß die Lücke sein kann – aber auch, dass deine Skills (Fotografie + 3D + Gestaltung) heute noch wertvoll sind, gerade in Kombination mit KI-Tools und moderner Medienproduktion.

Screenshot

OmNomBirb – ONB

Hervorgehoben

Hier ist er:
Mein eigener Meme-Coin. 

Eben auf four.meme erstellt. 
Auf BinanceSmartChain (sehr geringe Gas-Fees 🙂 ).

Im Moment, 06.09.2024 ca. 3.00 Uhr, noch sehr günstig 0.0000000075 BNB (≈ $ 0,0000037635)

Hier der Referal-Link:
https://four.meme/token/0x18b06
ff2e77ca69dc4809584a7250c0d
7ff0aaa1?code=28F2F2FW9MX3

Haftungsausschluss:
Dies ist ein reiner Memecoin.
Kein sicheres Investment !!!
Totalverlust des investierten Geldes ist möglich (und wohl auch eher sehr wahrscheinlich) !!!
Ich übernehme KEINE HAFTUNG für irgendwelche Schäden gleich welcher Art, die durch Kauf des Coins/Tokens entstehen.

P.S.:
Es ist übrigens nicht so, dass ich Geld bekomme, wenn ihr den Coin kauft.
Ich muss den auch selbst kaufen und kann auch nur vom steigenden Kurs profitieren.
Ich bin quasi nur der Creator, der für eine geringe Gebühr den Coin auf der Plattform four.meme erschaffen hat.

UPDATE 24.09.2024:
Es gibt jetzt einen Discord-Channel für OmNomBirb(ONB)
https://discord.gg/FgP2NXXPGQ

NEIN

Hervorgehoben

Ich kanns dir Drecksau und deiner Stalkerbande auch nochmal schriftlich in meinem Blog mitteilen:

ICH VERKAUFE MEINEN PC UND MEINE SOFTWARE NICHT.

ICH VERSCHENKE MEINEN PC UND MEINE SOFTWARE NICHT.

ICH SPENDE MEINEN PC UND MEINE SOFTWARE NICHT.

ICH VERLEIHE MEINEN PC UND MEINE SOFTWARE NICHT.

ICH VERMIETE MEINEN PC UND MEINE SOFTWARE NICHT.

ICH BIN KEIN MIETBÜRO UND KEINE MIETWERKSTATT.

Damit müssten alle Unklarheiten beseitigt sein. FUCK OFF.

(UPDATE 13.11.2019: Leider aus aktuellem Anlaß mußte ich den Blogbeitrag nochmal nach vorne holen, weil diese kriminellen Deppen seit drei Tagen Amok laufen um mir zu erklären, daß ich meinen PC jetzt endlich hergeben solle)

(UPDATE 07.06.2021: Nachdem ich jahrelang der Mafia getrotzt habe und meinen PC nicht hergegeben habe, kam am 12.05.2021, um 6.30 Uhr die Polizei und hat meinen PC „beschlagnahmt …)

Deutschland sucht den … äh … ja wen eigentlich ???

Hervorgehoben

Eben auf t-online News: Deutschland sucht alle. Also wegen Arbeitsmarkt und so.

Da konnte ich mir ein leichtes Kichern und latente Hassgefühle nicht verkneifen.
Angeblich werden ja Fachkräfte überall und aller Orten gesucht.
Ich zum Beispiel habe Fachabitur Fachrichtung Gestaltung (Staatliche Fachoberschule Abschluss 1995), habe eine Berufsausbildung als Fotograf (Duale Ausbildung mit Berufsschule Abschluss 1999) und habe mich noch privat weitergebildet mit Software im Bereich 3D-Realtime, Visualisierung, Rendering, Modeling, Texturierung und weiterer dazu passender Qualifikationen etc.

Also ich bin eine richtige Fachkraft mit staatlich anerkannten Qualifikationen, einschließlich Abitur. Zudem bin ich bereit umzuziehen für eine Arbeitsstelle, und das in ganz Deutschland.
Aaaaber man – einschließlich mir selbst – kann es kaum glauben … aber ich bin seit genau 20 Jahren fast ununterbrochen arbeitslos. Bis auf ein paar 450€ Jobs etc.
Ich weiß nicht wen oder was die suchen, aber deutsche Fachkräfte in Deutschland anscheinend nicht.

Doidsche Lahnd fick dich.

A bissl was geht immer

Hervorgehoben

Da mir ja mein PC von der Polizei weggenommen wurde, hab ich derzeit nur einen sehr kleinen Computer leihweise zur Verfügung.
Aber das Glas ist immer auch halb voll, und wenn das Leben dir Zitronen gibt, mach gefälschten Rotwein in das Glas. Oder so ähnlich.

Jedenfalls läuft auf dem kleinen Notebook immerhin Blender 3.x und das gibt mir die Gelegenheit endlich mal Blender zu lernen und Cycles auszuprobieren.
Allerdings hat das Notebook so eine Art Bullauge aus Kartoffelglas wo normalerweise der Bildschirm ist, und das stellt nur ca. 37% sRGB und zwei Graustufen dar, deswegen bin ich damit fast blind im Moment, und zudem sitze ich währenddessen mit dem 49€-Ticket in wackligen bayerischen Zügen, da ich zuhause in Augsburg immer noch nicht in Ruhe gelassen werde und versuche mit der Maus wenigstens jedes dritte Mal das zu treffen, was ich anklicken möchte …
Also es ist sehr mühsam, aber Blender 3.x ist sehr geil und läuft echt überraschend gut auf dem kleinen Notebook.

Points-To-Circle V2.0 für Blender

So, da das Points-To-Circle Script von gestern schon recht praktisch war, aber noch ein paar Verbesserungen brauchte, habe ich es heute nochmal mit Copilot verbessert und die V2.0 Version gebastelt.

Diesmal muss man den Circle nicht mehr per skalieren umkehren, damit er ein Loch und keine Scheibe ist, man muss ihn nicht mehr drehen, und man kann wählen zwischen Achsen, View und Normalendurchschnitt, um den Circle auszurichten.

Also eine echte super Verbesserung :)))
Getestet mit Blender 3.3.10

Und hier der verbesserte Code:

bl_info = {
"name": "Achim Tools: Points to Circle (Axis, View, Normals)",
"author": "Achim & Copilot",
"version": (1, 5),
"blender": (3, 3, 1),
"location": "View3D > Sidebar > Achim Tools",
"description": "Perfekter Kreis in Weltachsen, ViewSpace oder Face-Normal-Ebene. Beibehaltung von Radius & Rotation.",
"category": "Mesh",
}

import bpy
import bmesh
from mathutils import Vector, Matrix
import math

# ---------- UI Properties ----------

class PointsToCircleSettings(bpy.types.PropertyGroup):

mode: bpy.props.EnumProperty(
name="Modus",
description="Wie soll die Kreisebene bestimmt werden?",
items=[
('AXIS', "Achsen", "XY/XZ/YZ Weltachsen verwenden"),
('VIEW', "View", "Kreis in aktueller Ansichtsebene erzeugen"),
('NORMALS', "Normals", "Kreisebene aus Durchschnittsnormalen berechnen"),
],
default='AXIS'
)

axis: bpy.props.EnumProperty(
name="Ebene",
description="Nur für Modus 'Achsen'",
items=[('XY', "XY", "Kreis in XY-Ebene"),
('XZ', "XZ", "Kreis in XZ-Ebene"),
('YZ', "YZ", "Kreis in YZ-Ebene")],
default='XY'
)

angle_offset: bpy.props.FloatProperty(
name="Startwinkel (Grad)",
description="Zusätzliche Rotation des Kreises",
default=0.0
)

clockwise: bpy.props.BoolProperty(
name="Clockwise",
description="Reihenfolge im Uhrzeigersinn",
default=False
)

start_at_active: bpy.props.BoolProperty(
name="Am aktiven Vertex starten",
description="Beginne Verteilung am aktiven Vertex",
default=True
)

# ---------- Operator ----------

class MESH_OT_points_to_circle_axis_ws(bpy.types.Operator):
bl_idname = "mesh.points_to_circle_axis_ws"
bl_label = "Points to Circle"
bl_options = {'REGISTER', 'UNDO'}

def execute(self, context):

obj = context.active_object
if not obj or obj.type != 'MESH':
self.report({'ERROR'}, "Aktives Objekt ist kein Mesh")
return {'CANCELLED'}

s = context.scene.points_to_circle_settings
mode = s.mode
axis = s.axis
angle_offset_deg = s.angle_offset
clockwise = s.clockwise
start_at_active = s.start_at_active

bm = bmesh.from_edit_mesh(obj.data)
verts = [v for v in bm.verts if v.select]

if len(verts) < 3: self.report({'ERROR'}, "Mindestens 3 Vertices auswählen") return {'CANCELLED'} mw = obj.matrix_world mw_inv = mw.inverted() # Weltpunkte sammeln world_points = [(v, mw @ v.co) for v in verts] # ---------- EBENE BESTIMMEN ---------- # 1) ViewSpace if mode == 'VIEW': region = context.region rv3d = context.region_data view_matrix = rv3d.view_matrix view_inv = view_matrix.inverted() def project2d(wco): v = view_matrix @ wco return Vector((v.x, v.y)) def unproject2d(x, y, depth): return view_inv @ Vector((x, y, depth)) pts2d = [(v, project2d(wco)) for v, wco in world_points] depths = [(view_matrix @ wco).z for _, wco in world_points] avg_depth = sum(depths) / len(depths) def reconstruct3d(x, y): return unproject2d(x, y, avg_depth) # 2) Durchschnittsnormalen elif mode == 'NORMALS': normals = [] for v, wco in world_points: for f in v.link_faces: normals.append((mw.to_3x3() @ f.normal).normalized()) if len(normals) == 0: self.report({'ERROR'}, "Keine angrenzenden Faces gefunden") return {'CANCELLED'} avg_normal = sum(normals, Vector((0, 0, 0))).normalized() up = Vector((0, 0, 1)) if abs(avg_normal.dot(up)) > 0.99:
up = Vector((0, 1, 0))

x_axis = avg_normal.cross(up).normalized()
y_axis = avg_normal.cross(x_axis).normalized()

def project2d(wco):
v = wco - world_center
return Vector((v.dot(x_axis), v.dot(y_axis)))

def reconstruct3d(x, y):
return world_center + x * x_axis + y * y_axis

world_center = sum((wco for _, wco in world_points), Vector((0, 0, 0))) / len(world_points)
pts2d = [(v, project2d(wco)) for v, wco in world_points]

# 3) Standard-Achsen
else:

def project2d(wco):
if axis == 'XY':
return Vector((wco.x, wco.y))
elif axis == 'XZ':
return Vector((wco.x, wco.z))
else:
return Vector((wco.y, wco.z))

pts2d = [(v, project2d(wco)) for v, wco in world_points]

avg_world = sum((wco for _, wco in world_points), Vector((0, 0, 0))) / len(world_points)

def reconstruct3d(x, y):
if axis == 'XY':
return Vector((x, y, avg_world.z))
elif axis == 'XZ':
return Vector((x, avg_world.y, y))
else:
return Vector((avg_world.x, x, y))

# ---------- 2D Zentrum ----------

xs = [p.x for _, p in pts2d]
ys = [p.y for _, p in pts2d]
center2d = Vector(((min(xs) + max(xs)) * 0.5, (min(ys) + max(ys)) * 0.5))

# ---------- Sortierung ----------

def angle_of(p2d):
return math.atan2(p2d.y - center2d.y, p2d.x - center2d.x)

sorted_items = sorted(pts2d, key=lambda item: angle_of(item[1]))

# Startpunkt am aktiven Vertex
av = bm.select_history.active
if start_at_active and isinstance(av, bmesh.types.BMVert) and av.select:
active_world = mw @ av.co
active_p2d = project2d(active_world)
best_i = min(range(len(sorted_items)),
key=lambda i: (sorted_items[i][1] - active_p2d).length_squared)
sorted_items = sorted_items[best_i:] + sorted_items[:best_i]

if clockwise:
sorted_items.reverse()

# ---------- Radius & Rotation beibehalten ----------

radii = [(p - center2d).length for _, p in pts2d]
radius = sum(radii) / len(radii)
if radius <= 1e-9: radius = 1.0 original_start_angle = angle_of(sorted_items[0][1]) offset_rad = math.radians(angle_offset_deg) n = len(sorted_items) # ---------- Punkte setzen ---------- for i, (v, _) in enumerate(sorted_items): ang = (2 * math.pi * i) / n + original_start_angle + offset_rad cx = math.cos(ang) * radius cy = math.sin(ang) * radius target_world = reconstruct3d(cx + center2d.x, cy + center2d.y) v.co = mw_inv @ target_world bmesh.update_edit_mesh(obj.data) return {'FINISHED'} # ---------- Panel ---------- class VIEW3D_PT_points_to_circle_ws(bpy.types.Panel): bl_label = "Points to Circle" bl_space_type = 'VIEW_3D' bl_region_type = 'UI' bl_category = 'Achim Tools' def draw(self, context): layout = self.layout s = context.scene.points_to_circle_settings layout.prop(s, "mode", expand=True) if s.mode == 'AXIS': layout.prop(s, "axis") layout.prop(s, "angle_offset") layout.prop(s, "clockwise") layout.prop(s, "start_at_active") layout.separator() layout.operator("mesh.points_to_circle_axis_ws", text="Apply Points to Circle") # ---------- Register ---------- classes = ( PointsToCircleSettings, MESH_OT_points_to_circle_axis_ws, VIEW3D_PT_points_to_circle_ws, ) def register(): for c in classes: bpy.utils.register_class(c) bpy.types.Scene.points_to_circle_settings = bpy.props.PointerProperty(type=PointsToCircleSettings) def unregister(): del bpy.types.Scene.points_to_circle_settings for c in reversed(classes): bpy.utils.unregister_class(c) if __name__ == "__main__": register()

Points-To-Circle für Blender

ACHTUNG: Neue Version V2.0
Heute habe ich mal wieder was für Blender gemacht. Mit Microsoft Copilot, wie fast alles zur Zeit :)))

Und zwar: ein Points-To-Circle Script

Das gibts für alle Apps wie 3dsMax und Cinema4D und bestimmt auch schon zig Versionen für Blender. Aber eine mehr schadet bestimmt nicht, und meine ist ganz praktisch in der jetzigen Version.

Und um nicht zu langweilen, gleich hier das Script, für alle die es haben wollen:

bl_info = {
"name": "Achim Tools: Points to Circle (Axis Planar, WorldSpace, Ordered)",
"author": "Achim & Copilot",
"version": (1, 3),
"blender": (3, 3, 1),
"location": "View3D > Sidebar > Achim Tools",
"description": "Perfekter Kreis auf XY/XZ/YZ mit Weltkoordinaten, BBox-Zentrum und stabiler Reihenfolge. UI über Scene-Properties.",
"category": "Mesh",
}

import bpy
import bmesh
from mathutils import Vector, Matrix
import math

# ———- UI Properties ———-

class PointsToCircleSettings(bpy.types.PropertyGroup):
axis: bpy.props.EnumProperty(
name=“Ebene“,
description=“Ebene, in der der Kreis liegen soll“,
items=[(‚XY‘, „XY“, „Kreis in XY-Ebene“),
(‚XZ‘, „XZ“, „Kreis in XZ-Ebene“),
(‚YZ‘, „YZ“, „Kreis in YZ-Ebene“)],
default=’XY‘
)
angle_offset: bpy.props.FloatProperty(
name=“Startwinkel (Grad)“,
description=“Rotation des Kreises in Grad“,
default=0.0
)
clockwise: bpy.props.BoolProperty(
name=“Clockwise“,
description=“Reihenfolge im Uhrzeigersinn“,
default=False
)
start_at_active: bpy.props.BoolProperty(
name=“Am aktiven Vertex starten“,
description=“Beginne Verteilung am aktiven Vertex (falls vorhanden)“,
default=True
)

# ———- Operator ———-

class MESH_OT_points_to_circle_axis_ws(bpy.types.Operator):
bl_idname = „mesh.points_to_circle_axis_ws“
bl_label = „Points to Circle (Axis Planar, WorldSpace)“
bl_options = {‚REGISTER‘, ‚UNDO‘}

def execute(self, context):
obj = context.active_object
if not obj or obj.type != ‚MESH‘:
self.report({‚ERROR‘}, „Aktives Objekt ist kein Mesh“)
return {‚CANCELLED‘}

# Settings aus Scene-Properties
s = context.scene.points_to_circle_settings
axis = s.axis
angle_offset_deg = s.angle_offset
clockwise = s.clockwise
start_at_active = s.start_at_active

bm = bmesh.from_edit_mesh(obj.data)
verts = [v for v in bm.verts if v.select]
if len(verts) < 3: self.report({‚ERROR‘}, „Mindestens 3 Vertices auswählen“) return {‚CANCELLED‘} # Weltmatrix und inverse mw: Matrix = obj.matrix_world mw_inv: Matrix = mw.inverted() # Weltkoordinaten der Auswahl world_points = [(v, mw @ v.co) for v in verts] # 2D-Projektion je nach gewünschter Ebene in Weltkoordinaten def project2d(wco: Vector) -> Vector:
if axis == ‚XY‘:
return Vector((wco.x, wco.y))
elif axis == ‚XZ‘:
return Vector((wco.x, wco.z))
else: # YZ
return Vector((wco.y, wco.z))

pts2d = [(v, project2d(wco)) for v, wco in world_points]

# 2D-Bounding-Box Zentrum (robuster als Durchschnittszentrum bei schiefen Loops)
xs = [p.x for _, p in pts2d]
ys = [p.y for _, p in pts2d]
min_x, max_x = min(xs), max(xs)
min_y, max_y = min(ys), max(ys)
center2d = Vector(((min_x + max_x) * 0.5, (min_y + max_y) * 0.5))

# 3D-Zentrum in Weltkoordinaten: auf Ebene fixieren (Z bzw. Y bzw. X aus Durchschnitt)
# Nutze den Durchschnitt für die nicht-projizierte Achse, damit die Ebene korrekt gesetzt wird.
avg_world = sum((wco for _, wco in world_points), Vector((0, 0, 0))) / len(world_points)
if axis == ‚XY‘:
center3d = Vector((center2d.x, center2d.y, avg_world.z))
elif axis == ‚XZ‘:
center3d = Vector((center2d.x, avg_world.y, center2d.y))
else: # YZ
center3d = Vector((avg_world.x, center2d.x, center2d.y))

# Winkel um 2D-BBox-Zentrum
def angle_of(p2d: Vector) -> float:
return math.atan2(p2d.y – center2d.y, p2d.x – center2d.x)

sorted_items = sorted(pts2d, key=lambda item: angle_of(item[1]))

# Optional am aktiven Vertex starten: nutze bmesh select_history
av = bm.select_history.active
if start_at_active and isinstance(av, bmesh.types.BMVert) and av.select:
# finde den Index des nächstliegenden 2D-Punktes zum aktiven Vertex
active_world = mw @ av.co
active_p2d = project2d(active_world)
best_i = min(range(len(sorted_items)),
key=lambda i: (sorted_items[i][1] – active_p2d).length_squared)
if best_i != 0:
sorted_items = sorted_items[best_i:] + sorted_items[:best_i]

if clockwise:
sorted_items.reverse()

# Radius = halbe größte 2D-Ausdehnung (immer rund)
max_extent = max(max_x – min_x, max_y – min_y) * 0.5
# Falls alle Punkte identisch (degeneriert), fallback auf kleinen Wert
if max_extent <= 1e-9: max_extent = 1.0 # Winkeloffset (Grad -> Radiant)
offset_rad = math.radians(angle_offset_deg)
n = len(sorted_items)

# Gleichmäßige Verteilung auf Kreis in Weltkoordinaten
for i, (v, _) in enumerate(sorted_items):
ang = (2 * math.pi * i) / n + offset_rad
cx = math.cos(ang) * max_extent
cy = math.sin(ang) * max_extent

if axis == ‚XY‘:
target_world = Vector((center3d.x + cx, center3d.y + cy, center3d.z))
elif axis == ‚XZ‘:
target_world = Vector((center3d.x + cx, center3d.y, center3d.z + cy))
else: # YZ
target_world = Vector((center3d.x, center3d.y + cx, center3d.z + cy))

# Zurück in Objektkoordinaten schreiben
v.co = mw_inv @ target_world

bmesh.update_edit_mesh(obj.data)
return {‚FINISHED‘}

# ———- Panel ———-

class VIEW3D_PT_points_to_circle_ws(bpy.types.Panel):
bl_label = „Points to Circle (Axis + WorldSpace)“
bl_space_type = ‚VIEW_3D‘
bl_region_type = ‚UI‘
bl_category = ‚Achim Tools‘

def draw(self, context):
layout = self.layout
s = context.scene.points_to_circle_settings
layout.prop(s, „axis“)
layout.prop(s, „angle_offset“)
layout.prop(s, „clockwise“)
layout.prop(s, „start_at_active“)
layout.separator()
layout.operator(„mesh.points_to_circle_axis_ws“, text=“Apply Points to Circle“)

# ———- Register ———-

classes = (
PointsToCircleSettings,
MESH_OT_points_to_circle_axis_ws,
VIEW3D_PT_points_to_circle_ws,
)

def register():
for c in classes:
bpy.utils.register_class(c)
bpy.types.Scene.points_to_circle_settings = bpy.props.PointerProperty(type=PointsToCircleSettings)

def unregister():
del bpy.types.Scene.points_to_circle_settings
for c in reversed(classes):
bpy.utils.unregister_class(c)

if __name__ == „__main__“:
register()

Um es zu nutzen einfach in Blender den Text Editor öffnen, einen neuen Text erstellen, dann den Code Copy/Paste, dann den Text Save_as irgendwohin saven, wo eure Scripte eben sind. Dann unter Edit/Preferences/Addons das Script installieren. Es ist dann im N-Panel im Reiter „Achim Tools“ den Namen des Reiters könnt ihr auch zuvor im Code ändern so dass er nicht „Achim Tools“ heisst sondern „Deine Tools“ oder whatever ihr ihn benennen wollt.

Und wer nicht weiss was das Script macht, einfach im Internet Point to Circle suchen, ihr findet dann schon was.

Kurz: wenn ihr ein Mesh mit einem Polygonloch habt, wählt ihr den Edgeloop des Loches aus, dann wechselt ihr auf Vertices und klickt im N-Panel das Script an und das Loch wird zu einem gleichmässigen Kreis. Das ist sehr geil und praktisch beim modeling.

Das Script kann sicher noch verbessert werden oder weitere Funktionen erhalten, aber es ist so schon recht praktisch.

Das o in ComputerBase steht für obsolet

Vor etwas mehr als 5 Jahren bin ich aus dem ComputerBase-Forum mit einem „permanent ban“ rausgeworfen worden. Wegen Offtopic und rechter Gesinnung und verbreiten rechter Thesen, so die Begründung in den Ermahnungen, die dem permanent ban vorausgegangen waren.

Damals fand ich das sehr ärgerlich, vor allem weil es ungerecht war, und da es eines der größten PC Foren ist und somit die meisten Mitglieder hatte und somit die besten und schnellsten Antworten geliefert hatte, wenn man Fragen zu PC Problemen hatte.

Heute, mehr als 5 Jahre später, kann man über solche Foren nur noch lachen. Die KI hat auch hier dafür gesorgt, dass sie mehr oder weniger überflüssig geworden sind. Obsolet.
Microsoft Copilot beantwortet alle Fragen in Sekunden und eigentlich immer besser (und so ausführlich wie man es möchte) als es in Foren der Fall ist. Dort muss man meistens mindestens Minuten warten, eher Stunden, manchmal Tage, und manchmal wartet man für immer vergebens auf eine Antwort.

Ich hab übrigens mal Jahre nach dem Rauswurf zum Spaß eine Email an die Admins geschickt, und gefragt, ob sie mittlerweile die geistige Reife hätten und erkannt haben, dass ich damals Recht hatte, da sich die gesellschaftliche Entwicklung in die Richtung bewegt hat, wie ich es damals geschrieben hatte, und sie sich bei mir entschuldigen würden und mich wieder einladen würden. Aber hatten sie nicht.

P.S.:
Euch braucht keiner mehr. Obsolet.

Back to the Pixelfuture

Vor einigen Jahren habe ich in 3ds Max versucht nachzubauen was damals gerade überall zu sehen war:
Bilder als eine Art Mosaik aus Säulen

Ich weiß nicht mehr wie weit ich damals gekommen bin, aber dank Copilot hab ichs heute mal kurz mit HTML und JavaScript nachgebaut, und es sieht sehr schön aus:

https://www.achimkinzelmann.de/pixel3d.html

Screenshot

Screenshot

Einfach ein Bild hochladen und an den Reglern spielen.
Viel Spaß !

+++++

Edit 10.12.2025: bessere Rotationsmöglichkeit und Checkbox zum ausblenden der Sliderbox eingebaut

Screenshot

Screenshot

Screenshot

+++++

Update 12.12.2025:
Es gibt wieder ein Upgrade zur vorherigen Version.
Ich hab noch eine Kameraverschiebefunktion eingebaut, damit man den Bildausschnitt genau bestimmen kann, dann noch eine Antialiasing Funktion damit es schöner wird, und noch eine Exportfunktion, damit man ein schönes Bild exportieren kann.

Screenshot

+++++

Update 12.12.2025:
Und noch ein Upgrade für heute. Mit Wellenbewegung zuschaltbar.