Collisionen

User avatar
wee5t
Posts: 348
Joined: Wed Oct 03, 2012 10:58 am
Contact:

Collisionen

Post by wee5t »

ich bin ja ein grosser moddeleicher fan.
besonders hat es mir die OldtimerFL.lua/OldtimerFLImplement.lua angetahn.
die für ein realistischen ausklinken von alten frondlader tools sorgt.
so realistisch das man schon fast angst bekommt.
gerade beim D40 habe ich das mitlerweile drauf.
das die nach dem ausklinken einmal durch schwingt und nach einem kurzen ruck wieder einrastet. (wie früher im passenden mom einmal kupplung kommen lassen)

hammer bekomme jedes mal ganz glasige augen.

jetzt habe ich das ganze aber auch noch eine nummer grösser.
und da funzelt das nicht mehr so.
und was garnicht gut aussieht das das tool durch den frontlader arm schwingt.

also bei der grossen version ist das tool breiter als der frontlader.
zwar hat die schaufel oder gabel eine collision und der frontlader arm auch aber irgendwie stossen sich die beiden nicht ab.
also da kollidiert nix.
das tool schwingt da voll durch.

jetzt habe ich mir gedacht wenn ich mit maya 4 kleine flächen mache und im GE an die passenden stellen schiebe. (so das ich anschläge habe)
welche collisions maske brauche ich da?
also ich möchte das die schaufel oder gabel gegen den frontlader arm knallt und zurück gefedert wird. (abgestossen)

und wie gross müssen diese flächen sein damit das funzelt?
wird ja eine knappe geschichte und ich möchte die flächen so klein als nur ebend möglich halten.
denn beim einhängen fährt der frontlader ja in das tool rein. (die aufnahmepunkte sitzen nicht aussen sondern etwas mehr in richtung mitte von der gabel oder schaufel)
und da dürfen sich die beiden natürlich nicht abstossen.

habe mir auch schon überlegt wenn das garnicht hin haut.
also mit den flächen die so gross sind wie in echt auch die berührungs flächen wären.
dann würde ich das ganze auch seitlich verschieben.
denn die collisionen sieht man ja nicht. ist also egal ob der anschlag neben dem tool sitzt.
hauptsache das tool geht nicht mehr durch die frontladerschwinge.
User avatar
wee5t
Posts: 348
Joined: Wed Oct 03, 2012 10:58 am
Contact:

Re: Collisionen

Post by wee5t »

so mal mit bild ist dann einfacher zu erklären.

erstes bild (links) normaler eingehängter zustand.

zweites bild (rechts) zu starkes durchschwingen. ( fehlende oder falsche collisionen)

drittes bild (unten) weiler sollte das tool nicht gehen
also an dem flacheisen in quer muss schluss sein mit der bewegung.

Image
User avatar
bassaddict
GIANTS Software | Web/Script Programmer
Posts: 11983
Joined: Tue Nov 29, 2011 2:44 pm
Location: ER, DE

Re: Collisionen

Post by bassaddict »

Kann man da nicht irgendwo eine maxRotation oder so angeben?
User avatar
wee5t
Posts: 348
Joined: Wed Oct 03, 2012 10:58 am
Contact:

Re: Collisionen

Post by wee5t »

wenn du mir sagst wo?
am attacher selber steht nur das. also vom frontlader.
<attacherJoint jointType="frontloader" index="8|8|0|0|0" allowsJointLimitMovement="false" allowsLowering="false" />

und beim (in diesem fall schaufel) attacher steht das.
<attacherJoint index="0" jointType="frontloader" fixedRotation="true"/>

in den beiden lua´s steht garnix was auch nur im ansatz darauf hin deuten könnte.
User avatar
bassaddict
GIANTS Software | Web/Script Programmer
Posts: 11983
Joined: Tue Nov 29, 2011 2:44 pm
Location: ER, DE

Re: Collisionen

Post by bassaddict »

Das war eine Frage, da ich das Script nicht kenne. Wäre zumindest gerade bei so einem Frontlader sinnvoll gewesen sowas einzubauen.
User avatar
wee5t
Posts: 348
Joined: Wed Oct 03, 2012 10:58 am
Contact:

Re: Collisionen

Post by wee5t »

axo ich dachte du wärst mal wieder drei schritte weiter als ich.

hier die beiden lua´s
wobei ich denke modelleicher wollte ja das es frei pendelt.
-- by modelleicher
-- http://www.schwabenmodding.bplaced.net
-- Setzt den Orientierungspunkt an dem sich die Schaufel beim einklinken orientiert.

OldtimerFLImplement = {};

function OldtimerFLImplement.prerequisitesPresent(specializations)
return SpecializationUtil.hasSpecialization(Attachable, specializations);
end;

function OldtimerFLImplement:load(xmlFile)
self.OFLreferencePoint = Utils.indexToObject(self.rootNode, getXMLString(xmlFile, "vehicle.OldtimerFLImplement#referencePoint"));
end;

function OldtimerFLImplement:delete()
end;

function OldtimerFLImplement:mouseEvent(posX, posY, isDown, isUp, button)
end;

function OldtimerFLImplement:keyEvent(unicode, sym, modifier, isDown)
end;

function OldtimerFLImplement:update(dt)

end;

function OldtimerFLImplement:draw()

end;]
-- by modelleicher
-- http://www.schwabenmodding.bplaced.net
-- OldtimerFL
-- sorgt für realistisches Ausklinken der Frontladerschaufel wie bei den alten Frontladern das so üblich war.

OldtimerFL = {};

function OldtimerFL.prerequisitesPresent(specializations)
return SpecializationUtil.hasSpecialization(Motorized, specializations);
end;

function OldtimerFL:load(xmlFile)
self.setFLState = OldtimerFL.setFLState;
self.implementReference = Utils.indexToObject(self.rootNode, getXMLString(xmlFile, "vehicle.OldtimerFrontloader#referencePoint"));

self.isFixed = true;
self.checkDistance = false;
end;

function OldtimerFL:delete()
end;

function OldtimerFL:readStream(streamId, connection)
self:setFLState(streamReadBool(streamId), true);
end;
function OldtimerFL:writeStream(streamId, connection)
streamWriteBool(streamId, self.isFixed);
end;

function OldtimerFL:mouseEvent(posX, posY, isDown, isUp, button)
end;
function OldtimerFL:keyEvent(unicode, sym, modifier, isDown)
end;

function OldtimerFL:setFLState(state, noEventSend)
setFLstateEvent.sendEvent(self, state, noEventSend);
self.isFixed = state;
end;

function OldtimerFL:update(dt)
if self:getIsActiveForInput() then
if InputBinding.hasEvent(InputBinding.FLAusklinken) then

if self.isFixed == true then
self:setFLState(false);
end;
end;
end;
if self:getIsActive() then
if self.flImplementReferencePoint ~= nil then
if self.isFixed == true then
setJointRotationLimit(self.attacherJoints[2].jointIndex, 2, true, 0, -0);
elseif self.isFixed == false then
setJointRotationLimit(self.attacherJoints[2].jointIndex, 2, false, Utils.degToRad(40), Utils.degToRad(-40));
if self.checkDistance == false then
local nearestDistance = 0.2;
local px, py, pz = getWorldTranslation(self.implementReference);
local vx, vy, vz = getWorldTranslation(self.flImplementReferencePoint);
local distance = Utils.vector3Length(px-vx, py-vy, pz-vz);
if distance > nearestDistance then
self.checkDistance = true;
end;
end;
end;
if self.checkDistance == true then
local nearestDistance = 0.1;
local px, py, pz = getWorldTranslation(self.implementReference);
local vx, vy, vz = getWorldTranslation(self.flImplementReferencePoint);
local distance = Utils.vector3Length(px-vx, py-vy, pz-vz);
if distance < nearestDistance then
self:setFLState(true);
self.checkDistance = false;
end;
end;
end;
end;
end;

function OldtimerFL:attachImplement(implement)
local jointType = implement.object.attacherJoint.jointType;
if jointType == Vehicle.JOINTTYPE_FRONTLOADER then
if implement.object.OFLreferencePoint ~= nil then
self.flImplementReferencePoint = implement.object.OFLreferencePoint
end;
end;
end;
function OldtimerFL:draw()

end;
function OldtimerFL:onLeave()
end;


setFLstateEvent = {};
setFLstateEvent_mt = Class(setFLstateEvent, Event);
InitEventClass(setFLstateEvent, "setFLstateEvent");

function setFLstateEvent:emptyNew()
local self = Event:new(setFLstateEvent_mt );
self.className="setFLstateEvent";
return self;
end;
function setFLstateEvent:new(vehicle, state)
self.vehicle = vehicle;
self.state = state;
return self;
end;
function setFLstateEvent:readStream(streamId, connection)
local id = streamReadInt32(streamId);
self.state = streamReadBool(streamId);
self.vehicle = networkGetObject(id);
self:run(connection);
end;
function setFLstateEvent:writeStream(streamId, connection)
streamWriteInt32(streamId, networkGetObjectId(self.vehicle));
streamWriteBool(streamId, self.state );
end;
function setFLstateEvent:run(connection)
self.vehicle:setFLState(self.state, true);
if not connection:getIsServer() then
g_server:broadcastEvent(setFLstateEvent:new(self.vehicle, self.state), nil, connection, self.object);
end;
end;
function setFLstateEvent.sendEvent(vehicle, state, noEventSend)
if noEventSend == nil or noEventSend == false then
if g_server ~= nil then
g_server:broadcastEvent(setFLstateEvent:new(vehicle, state), nil, nil, vehicle);
else
g_client:getServerConnection():sendEvent(setFLstateEvent:new(vehicle, state));
end;
end;
end;
User avatar
bassaddict
GIANTS Software | Web/Script Programmer
Posts: 11983
Joined: Tue Nov 29, 2011 2:44 pm
Location: ER, DE

Re: Collisionen

Post by bassaddict »

setJointRotationLimit(self.attacherJoints[2].jointIndex, 2, false, Utils.degToRad(40), Utils.degToRad(-40));
Damit müsste sich das einstellen lassen. Das false mal auf true stellen und dann ein bisschen mit den Grad-Werten rumspielen.
User avatar
modelleicher
Posts: 1575
Joined: Fri Jul 09, 2010 11:10 pm
Location: Hessen
Contact:

Re: Collisionen

Post by modelleicher »

Ganz genau.. In dem Fall die Schaufel im GE importieren in den Attacher packen auf 0 rotieren und dann den Attacher bis max wie weit er gehen darf drehen, den Rotationswert ablesen und in der LUA eintragen.. ;)


LG
Eine Stunde oder Minute ist nur ein winziger Teil unseres gesamten Lebens. Und dennoch sind es die einzelnen Momente, die das Leben lebenswert machen.
User avatar
wee5t
Posts: 348
Joined: Wed Oct 03, 2012 10:58 am
Contact:

Re: Collisionen

Post by wee5t »

jaaa, aber ich habe wieder das alte problem.
sobald ich in der lua auf true stelle kann ich nicht mehr ausklinken.

habe im mom wehnig zeit und daher gestern nur einen schnelltest gemacht.
ohne die rotation im GE an zu passen.
sondern einfach nur mit
true, Utils.degToRad(80), Utils.degToRad(-80)); angefangen.
kein ausklinken mehr möglich.
gut dann das ganze nochmal mit 40 und -40. kein ausklinken.
wieder umgestellt auf false. ausklinken geht wieder.

ich muss also wenn ich in der lua auf true änder auch noch irgend etwas in der fahrzeug.xml ändern.

aber was?

PS
oder lag das vielleicht doch nur daran das die schaufel nicht ausklinken konnte weil der winkel auserhalb des schwenkbereiches war?
mache gleich noch einen weiteren schnell test mit +180 und -180° dann müsste der doch auf jeden fall schon einmal ausklinken oder nicht?
Ingolf
Posts: 3151
Joined: Wed Jan 23, 2013 9:51 am

Re: Collisionen

Post by Ingolf »

Du hast doch einen in Skype der Dir bei Maya hilft. Genau der hat auch wieder eine Verbindung zu Modelleicher. Also schick den Ingolf Dein Sorgenkind damit er es an den richtigen weiter geben kann. Weist doch Ingolf spielt kein LS 13.
Nicht nur ich suche meinen genetischen Zwilling. Auch Du könntest einer sein.
Weitere Infos: https://www.dkms.de/de?adc_source=googl ... medium=cpc
User avatar
wee5t
Posts: 348
Joined: Wed Oct 03, 2012 10:58 am
Contact:

Re: Collisionen

Post by wee5t »

psssst
meine geheimquellen werden nicht verraten :biggrin2:
woher weiss du eigentlich das ich den ingolf kenne?
und ich habe auch keine probleme mit modelleicher. ich weiss schon garnicht mehr wie oft er mir über PN geholfen hat.

aber das sind ja beides echte halbgötter und wenn es so ebend geht versuche ich sollche user nicht dirkt an zu schreiben.
möchte gar nicht wissen wieviel post die beiden so bekommen pro tag oder stunde.
und wenn die anderen immer meine arbeit machen dann lerne ich ja nie etwas dazu.
ich möchte irgend wann auch mal auf eigenen beinen stehen können.
so das die anderen mich fragen können und ich deren probleme löse.

und lernen kann ich immer am bessten wenn man es erst einmal falsch macht. das prägt viel mehr als wenn einem immer alles nur vorgekaut wird.

EDIT
so weitere tests mit + - 180 und 360° ergaben.
kein ausklinken mehr möglich.
aber disesmal ohne das der oberlenker dabei versagt.
also mit der fronthydraulik ist alles i.O.

ich muss also noch etwas in der fahrzeug.xml anpassen. aber was?
Last edited by wee5t on Fri Apr 12, 2013 1:58 pm, edited 1 time in total.
User avatar
wee5t
Posts: 348
Joined: Wed Oct 03, 2012 10:58 am
Contact:

Re: Collisionen

Post by wee5t »

so heute geht es weiter.
wollen wir doch mal sehen ob wir das viech nicht erschlagen bekommen.

wie gesagt sobalt ich in der lua auf true gehe kann ich nicht mehr ausklinken.
ich vermute das da was in meiner fahrzeug.xml nicht passt.
denn ich hatte so schon kino ohne ende das ding überhaupt zum ausklinken zu bewegen.
modelleicher hat mir geraten den frontlader an zweiter stelle zu setzen.
da ich das an dritter stelle und mit attacherJointIndices="2" nicht zum laufen bekommen habe.
sprich kein ausklinken und bei der fronthydraulik hat der oberlenker seinen dienst eingestellt.

meine fahrzeug.xml muss also eine gewalige beule haben.
<?xml version="1.0" encoding="utf-8" standalone="no" ?>
<vehicle type="DeutzD13006">
<annotation>Copyright (C) GIANTS Software GmbH, All Rights Reserved. powerd by wee5t</annotation>
<name>
<en>deutz 13006</en>
<de>deutz 13006</de>
</name>
<description></description>
<filename>13006.i3d</filename>
<wheels autoRotateBackSpeed="2.5">
<wheel rotSpeed="55" rotMax="33" rotMin="-33" driveMode="2" repr="0>0" driveNode="0>0|0" radius="0.6" deltaY="0.2" suspTravel="0.2" spring="200" damper="30" mass="0.3" />
<wheel rotSpeed="55" rotMax="33" rotMin="-33" driveMode="2" repr="0>1" driveNode="0>1|0" radius="0.6" deltaY="0.2" suspTravel="0.2" spring="200" damper="30" mass="0.3" />
<wheel rotSpeed="0" driveMode="1" repr="2" radius="0.85" deltaY="0.1" suspTravel="0.15" spring="200" damper="30" mass="0.5" />
<wheel rotSpeed="0" driveMode="1" repr="3" radius="0.85" deltaY="0.1" suspTravel="0.15" spring="200" damper="30" mass="0.5" />
</wheels>
<motor minRpm="100" maxRpm="570 1060 2600 435" maxTorques="2.5 -1 -1 -1" brakeForce="12" lowBrakeForceScale="0.8" compensateWheelRadius="true" accelerations="1 1 1 1" lowBrakeForceSpeedLimit="1" forwardGearRatio="13" backwardGearRatio="13" differentialRatio="1" rpmFadeOutRange="20">
<torque rpm="100" torque="3.35"/>
<torque rpm="2600" torque="2.45"/>
<backwardTorque rpm="600" torque="2.45"/>
<backwardTorque rpm="720" torque="1.9"/>
</motor>
<accelerationSpeed maxAcceleration="0.25" deceleration="0.4" backwardDeceleration="0.7" />
<fuelCapacity>160</fuelCapacity>
<fuelUsage>0.002</fuelUsage>
<downForce>5</downForce>
<bunkerSiloCompacter compactingScale="15"/>
<cameras count="2">
<camera1 index="4|0" rotatable="true" rotateNode="4" limit="true" rotMinX="-1.4" rotMaxX="1.1" transMin="4" transMax="50" />
<camera2 index="5" rotatable="true" limit="false" rotMinX="0" rotMaxX="0" transMin="0" transMax="0" />
</cameras>

<lights count="1">
<light1 index="12" />
</lights>

<steering index="13|0" rotationSpeed="6"/>
<enterReferenceNode index="0>" />
<exitPoint index="6" />
<size width="3.5" length="5.5" lengthOffset="-0.4"/>
<cuttingAreas count="0">
<!--cuttingArea1 startIndex="6" widthIndex="7" heightIndex="8" losing="true"/-->
</cuttingAreas>

<!--attacherJoint index="10" /-->
<trailerAttacherJoints>
<trailerAttacherJoint index="7" />
<trailerAttacherJoint index="15" low="true" />
<trailerAttacherJoint index="18" />
</trailerAttacherJoints>
<tipCamera index="8" />


<attachSound file="$data/vehicles/steerable/deutz/attach.wav" pitchOffset="1" />
<motorStartSound file="$data/vehicles/steerable/deutz/agro620_start.wav" pitchOffset="1" volume="1.0" />
<motorSound file="$data/vehicles/steerable/deutz/agro620_idle.wav" pitchOffset="1" pitchScale="0.03" pitchMax="1.65" volume="1.0" />
<motorSoundRun file="$data/vehicles/steerable/deutz/agroL720run.wav" pitchOffset="0.5" pitchScale="0.02" pitchMax="1.05" volume="0.5" />
<motorStopSound file="$data/vehicles/steerable/deutz/agro620_out.wav" pitchOffset="1" />
<compressedAirSound file="$data/vehicles/steerable/deutz/compressedAir.wav" pitchOffset="1" volume="1.0"/>
<compressionSound file="$data/vehicles/steerable/deutz/compressorWork.wav" pitchOffset="1" volume="1.5"/>
<aiMotorSound file="$data/vehicles/steerable/deutz/agro720idleAI.wav" pitchOffset="1" radius="25" innerRadius="4" volume="1.0" />
<honkSound file="$dataS2/sounds/horn.wav" volume="1" radius="80" innerRadius="60" />

<exhaustParticleSystems count="6">
<exhaustParticleSystem1 position="0.40021 2.73713 0.40091" rotation="0 0 0" file="exhaustParticleSystemBig.i3d" />
<exhaustParticleSystem1 position="0.40021 2.73713 0.40091" rotation="0 0 0" file="exhaustParticleSystemBig.i3d" />
<exhaustParticleSystem1 position="0.40021 2.73713 0.40091" rotation="0 0 0" file="exhaustParticleSystemBig.i3d" />
<exhaustParticleSystem1 position="0.40021 2.73713 0.40091" rotation="0 0 0" file="exhaustParticleSystemBig.i3d" />
<exhaustParticleSystem1 position="0.40021 2.73713 0.40091" rotation="0 0 0" file="exhaustParticleSystemBig.i3d" />
<exhaustParticleSystem1 position="0.40021 2.73713 0.40091" rotation="0 0 0" file="exhaustParticleSystemBig.i3d" />
</exhaustParticleSystems>

<attacherJoints>
<attacherJoint index="9|0|0" rotationNode="9" maxRot="-14 0 0" rotationNode2="9|0" maxRot2="9 0 0" maxTransLimit="0 0.5 0" maxRotLimit="0 0 20" moveTime="1.5" shaft="30">
<bottomArm rotationNode="10" translationNode="10|0" referenceNode="10|0|0" zScale="-1" />
<topArm rotationNode="11" translationNode="11|0" referenceNode="11|0|0" zScale="-1" />
</attacherJoint>
<attacherJoint jointType="frontloader" index="17|5|0|1|0" allowsJointLimitMovement="false" allowsLowering="false" />
<attacherJoint index="17|4|0|0|0" rotationNode="17|4|0" maxRot="10 0 0" rotationNode2="17|4|0|0" maxRot2="-7 0 0" maxTransLimit="0 0.4 0" maxRotLimit="0 0 20" moveTime="1.5">
<topArm baseNode="0>17|4|2" filename="$data/vehicles/steerable/upperLinkMedium.i3d" zScale="1" />
<bottomArm rotationNode="17|4|1" translationNode="17|4|1|0" referenceNode="17|4|1|0|0" zScale="1" />
</attacherJoint>

</attacherJoints>
<movingTools>
<!-- Frontloader -->
<movingTool index="17|5|0" attacherJointIndices="1" componentJointIndex="0" anchorActor="0" rotSpeed="20" rotAcceleration="80" rotMax="9.96" rotMin="-76.23" axis="AXIS_FRONTLOADER_ARM" invertAxis="true" mouseAxis="AXIS_FRONTLOADER_ARM" invertMouseAxis="true" speedFactor="0.3">
<dependentPart index="0>17|5|0|0" />
</movingTool>
</movingTools>
<movingParts>
<!-- frontloaderswing cylinder -->
<movingPart index="0>17|5|0|0" referencePoint="0>17|5|1" referenceFrame="0>" isActiveDirty="true" playSound="false" scaleZ="false">
<translatingPart index="0>17|5|0|0|0" />
</movingPart>
</movingParts>

<mouseControls>
<mouseControl iconFilename="$dataS2/menu/mouseControlsHelp/dafs_arm1.png" mouseButton="LEFT" mouseAxis="Y" axis="AXIS_FRONTLOADER_ARM" />
</mouseControls>
<OldtimerFrontloader referencePoint="17|5|0|1|1" /> <!-- der ReferencePoint gibt den Punkt an an dem die Schaufel wieder einklingt (sobald der Referenzpunkt an der Gabel in einen bestimmten Distanzbereich kommt) -->

<characterNode index="14" cameraMinDistance="1.5" />
<aiTrafficCollisionTrigger index="16" />
<components count="1">
<component1 centerOfMass="0 0 -0.15" solverIterationCount="20" />
</components>
<schemaOverlay file="$data/vehicles/schemas/vehicleSchema.png" fileSelected="$data/vehicles/schemas/vehicleSchemaSelected.png" width="0.5" height="0.5" attacherJointPosition="0.5 0">
<attacherJoint position="1 0" rotation="0" invertX="false" />
<attacherJoint position="0 0.5" rotation="0" invertX="false" />
<attacherJoint position="0 0" rotation="0" invertX="true" />
<attacherJoint position="1 0" rotation="0" invertX="false" />
<attacherJoint position="1 0" rotation="0" invertX="false" />
<attacherJoint position="1 0" rotation="0" invertX="false" />
</schemaOverlay>
</vehicle>
Ingolf
Posts: 3151
Joined: Wed Jan 23, 2013 9:51 am

Re: Collisionen

Post by Ingolf »

Ja der Don darf den Ingolf ruhig anschreiben. Ich hab halt auch meine Quellen und weis doch das Erklären besser ist als fertige Teile liefern.
Nicht nur ich suche meinen genetischen Zwilling. Auch Du könntest einer sein.
Weitere Infos: https://www.dkms.de/de?adc_source=googl ... medium=cpc
Post Reply